diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 000000000..fbccc1e8a --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,25 @@ +# Run this command to always ignore formatting commits in git blame +# git config blame.ignoreRevsFile .git-blame-ignore-revs + +# vim c++ filetype in modelines +04c6bc478e082263d67c41bedbd033dde2d429eb +# Ran clang-format +f032b5570b4cd87c6bb4abb54c0b98e69c939955 +# Applied clang-format update to repo +6e6fc38935054db0534d5af4fb99c6193305b946 +# revert retabbing +2b315626f3af765cdfbc61114647412cdb798b3a +# more modeline errata +3a8e01a77a7c97af0b16fb1651b230cee7f7d4c6 +# fix more vi modelines +2fc507c98f53a76718f61f9a36602f86b5ac0cc9 +# flip et/noet in modelines +e16a7d8f3b8f906c3ef76e79f57f3adfc7f25186 +# fix vi modelines +394d998315f613a888cc6b6c051d4163bdf5cd6f +# clang-format +c0eacf2eb1e1c0b3bd4f71f12fef258f5b249c3f +# ape-m1 formatting cleanup +da8baf2aa5ce93b958aca90a0ae69f537806324b +# Run clang-format on most sources +369f9740de4534c28d0e81ab2afc99decbb9a3e6 diff --git a/.github/ISSUE_TEMPLATE/01-bug-low.yml b/.github/ISSUE_TEMPLATE/01-bug-low.yml new file mode 100644 index 000000000..20f8ff9cb --- /dev/null +++ b/.github/ISSUE_TEMPLATE/01-bug-low.yml @@ -0,0 +1,59 @@ +name: Low Severity Bugs +description: Used to report low severity bugs in cosmopolitan (e.g. cosmetic issues, non critical UI glitches) +title: "Bug: " +labels: ["bug", "low severity"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + Please include information about your system, the steps to reproduce the bug, + and the version of cosmopolitan that you are using. + If possible, please provide a minimal code example that reproduces the bug. + You may also consider using function call tracing `--ftrace` or the lighter system call tracing `--strace` + for additional technical logging that may allow us to narrow down where the fault occurred. + - type: input + id: contact + attributes: + label: Contact Details + description: How can we get in touch with you if we need more info? + placeholder: ex. email@example.com + validations: + required: false + - type: textarea + id: what-happened + attributes: + label: What happened? + description: Also tell us, what did you expect to happen? + placeholder: Tell us what you see! + validations: + required: true + - type: textarea + id: version + attributes: + label: Version + description: What version of our software are you running? (use `--version` to get a version string) + placeholder: "cosmocc (GCC) 12.3.0" + validations: + required: true + - type: dropdown + id: operating-system + attributes: + label: What operating system are you seeing the problem on? + multiple: true + options: + - Linux + - Mac + - Windows + - FreeBSD + - OpenBSD + - NetBSD + - BIOS + validations: + required: false + - type: textarea + id: logs + attributes: + label: Relevant log output + description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. + render: shell diff --git a/.github/ISSUE_TEMPLATE/02-bug-medium.yml b/.github/ISSUE_TEMPLATE/02-bug-medium.yml new file mode 100644 index 000000000..7626c25da --- /dev/null +++ b/.github/ISSUE_TEMPLATE/02-bug-medium.yml @@ -0,0 +1,59 @@ +name: Medium Severity Bug +description: Used to report medium severity bugs in cosmopolitan (e.g. Malfunctioning Features but generally still useable) +title: "Bug: " +labels: ["bug", "medium severity"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + Please include information about your system, the steps to reproduce the bug, + and the version of cosmopolitan that you are using. + If possible, please provide a minimal code example that reproduces the bug. + You may also consider using function call tracing `--ftrace` or the lighter system call tracing `--strace` + for additional technical logging that may allow us to narrow down where the fault occurred. + - type: input + id: contact + attributes: + label: Contact Details + description: How can we get in touch with you if we need more info? + placeholder: ex. email@example.com + validations: + required: false + - type: textarea + id: what-happened + attributes: + label: What happened? + description: Also tell us, what did you expect to happen? + placeholder: Tell us what you see! + validations: + required: true + - type: textarea + id: version + attributes: + label: Version + description: What version of our software are you running? (use `--version` to get a version string) + placeholder: "cosmocc (GCC) 12.3.0" + validations: + required: true + - type: dropdown + id: operating-system + attributes: + label: What operating system are you seeing the problem on? + multiple: true + options: + - Linux + - Mac + - Windows + - FreeBSD + - OpenBSD + - NetBSD + - BIOS + validations: + required: false + - type: textarea + id: logs + attributes: + label: Relevant log output + description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. + render: shell diff --git a/.github/ISSUE_TEMPLATE/03-bug-high.yml b/.github/ISSUE_TEMPLATE/03-bug-high.yml new file mode 100644 index 000000000..ec026d6a6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/03-bug-high.yml @@ -0,0 +1,59 @@ +name: High Severity Bug +description: Used to report high severity bugs in cosmopolitan (e.g. Malfunctioning features hindering important common workflow) +title: "Bug: " +labels: ["bug", "high severity"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + Please include information about your system, the steps to reproduce the bug, + and the version of cosmopolitan that you are using. + If possible, please provide a minimal code example that reproduces the bug. + You may also consider using function call tracing `--ftrace` or the lighter system call tracing `--strace` + for additional technical logging that may allow us to narrow down where the fault occurred. + - type: input + id: contact + attributes: + label: Contact Details + description: How can we get in touch with you if we need more info? + placeholder: ex. email@example.com + validations: + required: false + - type: textarea + id: what-happened + attributes: + label: What happened? + description: Also tell us, what did you expect to happen? + placeholder: Tell us what you see! + validations: + required: true + - type: textarea + id: version + attributes: + label: Version + description: What version of our software are you running? (use `--version` to get a version string) + placeholder: "cosmocc (GCC) 12.3.0" + validations: + required: true + - type: dropdown + id: operating-system + attributes: + label: What operating system are you seeing the problem on? + multiple: true + options: + - Linux + - Mac + - Windows + - FreeBSD + - OpenBSD + - NetBSD + - BIOS + validations: + required: false + - type: textarea + id: logs + attributes: + label: Relevant log output + description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. + render: shell diff --git a/.github/ISSUE_TEMPLATE/04-bug-critical.yml b/.github/ISSUE_TEMPLATE/04-bug-critical.yml new file mode 100644 index 000000000..0741f718e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/04-bug-critical.yml @@ -0,0 +1,59 @@ +name: Critical Severity Bug +description: Used to report critical severity bugs in cosmopolitan (e.g. Crashing, Corrupted, Dataloss) +title: "Bug: " +labels: ["bug", "critical severity"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + Please include information about your system, the steps to reproduce the bug, + and the version of cosmopolitan that you are using. + If possible, please provide a minimal code example that reproduces the bug. + You may also consider using function call tracing `--ftrace` or the lighter system call tracing `--strace` + for additional technical logging that may allow us to narrow down where the fault occurred. + - type: input + id: contact + attributes: + label: Contact Details + description: How can we get in touch with you if we need more info? + placeholder: ex. email@example.com + validations: + required: false + - type: textarea + id: what-happened + attributes: + label: What happened? + description: Also tell us, what did you expect to happen? + placeholder: Tell us what you see! + validations: + required: true + - type: textarea + id: version + attributes: + label: Version + description: What version of our software are you running? (use `--version` to get a version string) + placeholder: "cosmocc (GCC) 12.3.0" + validations: + required: true + - type: dropdown + id: operating-system + attributes: + label: What operating system are you seeing the problem on? + multiple: true + options: + - Linux + - Mac + - Windows + - FreeBSD + - OpenBSD + - NetBSD + - BIOS + validations: + required: false + - type: textarea + id: logs + attributes: + label: Relevant log output + description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. + render: shell diff --git a/.github/ISSUE_TEMPLATE/05-enhancement.yml b/.github/ISSUE_TEMPLATE/05-enhancement.yml new file mode 100644 index 000000000..48a03d25d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/05-enhancement.yml @@ -0,0 +1,51 @@ +name: Enhancement template +description: Used to request enhancements for cosmopolitan +title: "Feature Request: " +labels: ["enhancement"] +body: + - type: markdown + attributes: + value: | + [Please post your idea first in Discussion if there is not yet a consensus for this enhancement request. This will help to keep this issue tracker focused on enhancements that the community has agreed needs to be implemented.](https://github.com/jart/cosmopolitan/discussions/categories/ideas) + + - type: checkboxes + id: prerequisites + attributes: + label: Prerequisites + description: Please confirm the following before submitting your enhancement request. + options: + - label: I am running the latest code. Mention the version if possible as well. + required: true + - label: I carefully followed the [README.md](https://github.com/jart/cosmopolitan/blob/master/README.md). + required: true + - label: I searched using keywords relevant to my issue to make sure that I am creating a new issue that is not already open (or closed). + required: true + - label: I reviewed the [Discussions](https://github.com/jart/cosmopolitan/discussions), and have a new and useful enhancement to share. + required: true + + - type: textarea + id: feature-description + attributes: + label: Feature Description + description: Please provide a detailed written description of what you were trying to do, and what you expected `cosmopolitan` to do as an enhancement. + placeholder: Detailed description of the enhancement + validations: + required: true + + - type: textarea + id: motivation + attributes: + label: Motivation + description: Please provide a detailed written description of reasons why this feature is necessary and how it is useful to `cosmopolitan` users. + placeholder: Explanation of why this feature is needed and its benefits + validations: + required: true + + - type: textarea + id: possible-implementation + attributes: + label: Possible Implementation + description: If you have an idea as to how it can be implemented, please write a detailed description. Feel free to give links to external sources or share visuals that might be helpful to understand the details better. + placeholder: Detailed description of potential implementation + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/06-research.yml b/.github/ISSUE_TEMPLATE/06-research.yml new file mode 100644 index 000000000..d481e09ee --- /dev/null +++ b/.github/ISSUE_TEMPLATE/06-research.yml @@ -0,0 +1,52 @@ +name: Research +description: Track new technical research area +title: "Research: " +labels: ["research"] +body: + - type: markdown + attributes: + value: | + Don't forget to check for any [duplicate research issue tickets](https://github.com/jart/cosmopolitan/issues?q=is%3Aopen+is%3Aissue+label%3A%22research+%F0%9F%94%AC%22) + + - type: checkboxes + id: research-stage + attributes: + label: Research Stage + description: Track general state of this research ticket + options: + - label: Background Research (Let's try to avoid reinventing the wheel) + - label: Hypothesis Formed (How do you think this will work and it's effect?) + - label: Strategy / Implementation Forming + - label: Analysis of results + - label: Debrief / Documentation (So people in the future can learn from us) + + - type: textarea + id: background + attributes: + label: Previous existing literature and research + description: Whats the current state of the art and whats the motivation for this research? + + - type: textarea + id: hypothesis + attributes: + label: Hypothesis + description: How do you think this will work and it's effect? + + - type: textarea + id: implementation + attributes: + label: Implementation + description: Got an approach? e.g. a PR ready to go? + + - type: textarea + id: analysis + attributes: + label: Analysis + description: How does the proposed implementation behave? + + - type: textarea + id: logs + attributes: + label: Relevant log output + description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. + render: shell diff --git a/.github/ISSUE_TEMPLATE/07-refactor.yml b/.github/ISSUE_TEMPLATE/07-refactor.yml new file mode 100644 index 000000000..5a28b4ed7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/07-refactor.yml @@ -0,0 +1,28 @@ +name: Refactor (Maintainers) +description: Used to track refactoring opportunities +title: "Refactor: " +labels: ["refactor"] +body: + - type: markdown + attributes: + value: | + Don't forget to [check for existing refactor issue tickets](https://github.com/jart/cosmopolitan/issues?q=is%3Aopen+is%3Aissue+label%3Arefactoring) in case it's already covered. + Also you may want to check [Pull request refactor label as well](https://github.com/jart/cosmopolitan/pulls?q=is%3Aopen+is%3Apr+label%3Arefactoring) for duplicates too. + + - type: textarea + id: background-description + attributes: + label: Background Description + description: Please provide a detailed written description of the pain points you are trying to solve. + placeholder: Detailed description behind your motivation to request refactor + validations: + required: true + + - type: textarea + id: possible-approaches + attributes: + label: Possible Refactor Approaches + description: If you have some idea of possible approaches to solve this problem. You may want to make it a todo list. + placeholder: Your idea of possible refactoring opportunity/approaches + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..0bdd19ddf --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,15 @@ +blank_issues_enabled: true +contact_links: + - name: FAQ + url: https://github.com/jart/cosmopolitan/wiki/FAQ + about: Is your question a common one? You may want to check here first. + - name: Got an idea? + url: https://github.com/jart/cosmopolitan/discussions/categories/ideas + about: Pop it there. It may then become an enhancement ticket. + - name: Got a question? + url: https://github.com/jart/cosmopolitan/discussions/categories/q-a + about: Ask a question there! + - name: Want to contribute? + url: https://github.com/jart/cosmopolitan/wiki/contribute + about: Head to the contribution guide page of the wiki for areas you can help with + diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 000000000..26d28df14 --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,53 @@ +# https://github.com/actions/labeler + +documentation: + - changed-files: + - any-glob-to-any-file: + - README.md + - LICENSE + - CONTRIBUTING.md + - libc/README.md + - tool/cosmocc/README.md + - third_party/getopt/README.txt +testing: + - changed-files: + - any-glob-to-any-file: + - test/** +build: + - changed-files: + - any-glob-to-any-file: + - build/** + - Makefile + - '*/*.mk' +examples: + - changed-files: + - any-glob-to-any-file: examples/** +devops: + - changed-files: + - any-glob-to-any-file: + - .github/** + - .clang-format +dsp: + - changed-files: + - any-glob-to-any-file: + - dsp/** +ape: + - changed-files: + - any-glob-to-any-file: + - ape/** +libc: + - changed-files: + - any-glob-to-any-file: + - libc/** +net: + - changed-files: + - any-glob-to-any-file: + - net/** +third_party: + - changed-files: + - any-glob-to-any-file: + - third_party/** +tool: + - changed-files: + - any-glob-to-any-file: + - tool/** diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml new file mode 100644 index 000000000..a68484d5d --- /dev/null +++ b/.github/workflows/labeler.yml @@ -0,0 +1,17 @@ +name: "Pull Request Labeler" +on: +- pull_request_target + +jobs: + labeler: + permissions: + contents: read + pull-requests: write + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + repository: "jart/cosmopolitan" + - uses: actions/labeler@v5 + with: + configuration-path: '.github/labeler.yml' diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json deleted file mode 100644 index 2544b3cf8..000000000 --- a/.vscode/c_cpp_properties.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "configurations": [ - { - "name": "Win32", - "includePath": [ - "${workspaceFolder}" - ], - "cStandard": "c11", - "cppStandard": "c++11", - "forcedInclude": ["${workspaceFolder}/.vscode/vscode.h"], - "defines": [ - "libcesque=", - "pureconst=", - "paramsnonnull(x)=", - "alignas(x)", - "alignof(x)", - "artificial=", - "__wur=", - "mayalias=", - "forceinline=", - "forcealign(x)=", - "scanfesque(x)=", - "strftimeesque(x)=", - "wontreturn=", - "textreal=", - "mallocesque=", - "callocesque=", - "vallocesque=", - "reallocesque=", - "strlenesque=", - "memcpyesque=", - "hasatleast=", - "noinline=", - "textexit=", - "returnstwice=", - "textwindows=", - "privileged=", - "dontinstrument=", - "nodebuginfo=", - "interruptfn=", - "optimizespeed=", - "forcealignargpointer=", - "dontasan=", - "dontubsan=", - "donothing=", - "nosideeffect=", - "unreachable=",, - "notpossible=", - "thatispacked=", - "dontthrow=", - "dontcallback=", - "relegated=", - "hidden=", - "textstartup=", - "returnsnonnull=", - "returnspointerwithnoaliases=", - "printfesque(x)=", - "attributeallocsize(x)=", - "returnsaligned(x)=", - "attributeallocalign(x)=", - "nullterminated(x)=" - ] - }, - { - "name": "Linux", - "includePath": [ - "${workspaceFolder}" - ], - "cStandard": "gnu17", - "compilerPath": "${workspaceFolder}/o/third_party/gcc/bin/x86_64-linux-musl-gcc", - "compilerArgs": [ - "-Wall", - "-Werror", - "-fdebug-prefix-map=${workspaceFolder}=", - "-frecord-gcc-switches", - "-Wa,-W", - "-Wa,-I.", - "-Wa,--noexecstack", - "-Og", - "-g", - "-gdescribe-dies", - "-msse3", - "-mno-red-zone", - "-fno-math-errno", - "-fno-trapping-math", - "-fno-fp-int-builtin-inexact", - "-fno-ident", - "-fno-common", - "-fno-gnu-unique", - "-fstrict-aliasing", - "-fstrict-overflow", - "-fno-semantic-interposition", - "-mno-omit-leaf-frame-pointer", - "-fno-jump-tables", - "-nostdinc", - "-iquote." - ], - "forcedInclude": [ - "libc/integral/normalize.inc" - ], - "defines": [ - "COSMO", - "MODE=" - ] - } - ], - "version": 4 -} diff --git a/.vscode/vscode.h b/.vscode/vscode.h deleted file mode 100644 index dfd8ea74e..000000000 --- a/.vscode/vscode.h +++ /dev/null @@ -1,2 +0,0 @@ -#define __VSCODE_INTELLISENSE__ 1 -#include "libc/integral/normalize.inc" diff --git a/Makefile b/Makefile index 4f5e61299..692df3a00 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 @@ -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 @@ -174,6 +174,7 @@ all: o o: o/$(MODE) o/$(MODE): \ o/$(MODE)/ape \ + o/$(MODE)/ctl \ o/$(MODE)/dsp \ o/$(MODE)/net \ o/$(MODE)/libc \ @@ -255,10 +256,11 @@ include third_party/nsync/mem/BUILD.mk # │ You can now use stdio include libc/proc/BUILD.mk # │ You can now use threads include libc/dlopen/BUILD.mk # │ You can now use processes include libc/thread/BUILD.mk # │ You can finally call malloc() +include ctl/BUILD.mk # │ 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 # │ @@ -299,6 +301,7 @@ include tool/viz/lib/BUILD.mk include tool/args/BUILD.mk include test/math/BUILD.mk include test/posix/BUILD.mk +include test/ctl/BUILD.mk include test/libcxx/BUILD.mk include test/tool/args/BUILD.mk include third_party/linenoise/BUILD.mk @@ -362,7 +365,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 @@ -440,7 +442,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 \ @@ -452,6 +454,7 @@ COSMOPOLITAN_OBJECTS = \ LIBC_THREAD \ LIBC_PROC \ THIRD_PARTY_NSYNC_MEM \ + CTL \ LIBC_MEM \ THIRD_PARTY_DLMALLOC \ LIBC_DLOPEN \ @@ -505,7 +508,6 @@ COSMOPOLITAN_H_PKGS = \ LIBC_STR \ LIBC_SYSV \ LIBC_THREAD \ - LIBC_TIME \ LIBC_TINYMATH \ LIBC_X \ LIBC_VGA \ @@ -521,6 +523,7 @@ COSMOPOLITAN_H_PKGS = \ COSMOCC_PKGS = \ $(COSMOPOLITAN_H_PKGS) \ + CTL \ THIRD_PARTY_AARCH64 \ THIRD_PARTY_LIBCXX \ THIRD_PARTY_LIBCXXABI \ @@ -543,15 +546,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 \ @@ -573,7 +567,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/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: \ 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-m1.c b/ape/ape-m1.c index 1afd1edb0..8d188404a 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 @@ -140,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 */ @@ -148,8 +157,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 | \ @@ -221,13 +230,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 +287,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 +324,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 +340,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 +391,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 { @@ -545,6 +561,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, @@ -585,10 +615,11 @@ __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)) { + if (Max(a, c) < Min(b, d)) { Pexit(exe, 0, "ELF segments overlap each others virtual memory"); } } @@ -614,7 +645,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 +662,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) { @@ -657,7 +693,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; } @@ -687,24 +723,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 +754,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"); } } @@ -759,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; @@ -780,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"); } @@ -790,8 +837,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; @@ -948,6 +997,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; @@ -970,7 +1022,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/ape.S b/ape/ape.S index eaf0bfaab..79594ddd4 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 │ │ │ @@ -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 @@ -1036,7 +1036,7 @@ ape_pe: .ascin "PE",4 .quad ape_pe_base // ImageBase .long ape_pe_sectionalignment // SectionAlignment .long ape_pe_filealignment // FileAlignment - .short v_ntversion // MajorOperatingSystemVersion + .short 10 // MajorOperatingSystemVersion .short 0 // MinorOperatingSystemVersion .short 0 // MajorImageVersion .short 0 // MinorImageVersion diff --git a/ape/ape.lds b/ape/ape.lds index 9b1d40e5a..81bd4ea6b 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); @@ -713,7 +715,6 @@ ape_idataz = LINK_WINDOWS ? RVA(ape_idata_iat) : 0; ape_idata_iatsize = LINK_WINDOWS ? ape_idata_iatend - ape_idata_iat : 0; ape_idata = LINK_WINDOWS ? RVA(ape_idata_idt) : 0; ape_idata_idtsize = LINK_WINDOWS ? ape_idata_idtend - ape_idata_idt : 0; -v_ntversion = LINK_WINDOWS ? 6 : 1; v_ntdllchar = LINK_WINDOWS ? 288 : 0; v_ntsubversion = LINK_WINDOWS ? 6 : 5; v_ntsubsystem = (LINK_WINDOWS diff --git a/ape/apeinstall.sh b/ape/apeinstall.sh index 37771820d..2a0a28590 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 @@ -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 diff --git a/ape/loader.c b/ape/loader.c index 752d5ef6e..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) @@ -228,13 +231,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 +358,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 +368,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 +536,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 +550,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 +571,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 +584,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 +614,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 +678,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 +712,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 +729,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 +767,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 +789,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 +811,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"); } @@ -808,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"); } @@ -818,8 +851,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 +984,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 +1057,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/ape/macros.internal.h b/ape/macros.internal.h index 19733f0f7..bdf71b500 100644 --- a/ape/macros.internal.h +++ b/ape/macros.internal.h @@ -132,7 +132,7 @@ #define SHSTUB2(SYM, X) \ HIDDEN(SYM##_bcs0 = BCD_LEFT(X)); \ HIDDEN(SYM##_bcs1 = BCD_RIGHT(X)) -#define BCD_SMEAR(X) ((X) + (X) * 10000) +#define BCD_SMEAR(X) ((X) + (X)*10000) #define BCD_LEFT(X) \ (((X)) < 10000 ? BCD_RIGHT(BCD_SMEAR(X)) | 0x10 \ : (X) < 100000 ? BCD_RIGHT(BCD_SMEAR((X) / 10)) \ @@ -140,23 +140,16 @@ : (X) < 10000000 ? BCD_RIGHT(BCD_SMEAR((X) / 1000)) \ : (X) < 100000000 ? BCD_RIGHT(BCD_SMEAR((X) / 10000)) \ : 0xffffffffffffffff) -#define BCD_RIGHT(X) \ - (((X)) < 10000 ? 0x20202020 \ - : (X) < 100000 ? 0x20202030 + \ - (X) % 10 \ - : (X) < 1000000 ? 0x20203030 + \ - ((X) / 10) % 10 + \ - (X) % 10 * 0x100 \ - : (X) < 10000000 ? 0x20303030 + \ - ((X) / 100) % 10 + \ - ((X) / 10) % 10 * 0x100 + \ - (X) % 10 * 0x10000 \ - : (X) < 100000000 ? 0x30303030 + \ - ((X) / 1000) % 10 + \ - ((X) / 100) % 10 * 0x100 + \ - ((X) / 10) % 10 * 0x10000 + \ - (X) % 10 * 0x1000000 \ - : 0xffffffffffffffff) +#define BCD_RIGHT(X) \ + (((X)) < 10000 ? 0x20202020 \ + : (X) < 100000 ? 0x20202030 + (X) % 10 \ + : (X) < 1000000 ? 0x20203030 + ((X) / 10) % 10 + (X) % 10 * 0x100 \ + : (X) < 10000000 ? 0x20303030 + ((X) / 100) % 10 + \ + ((X) / 10) % 10 * 0x100 + (X) % 10 * 0x10000 \ + : (X) < 100000000 \ + ? 0x30303030 + ((X) / 1000) % 10 + ((X) / 100) % 10 * 0x100 + \ + ((X) / 10) % 10 * 0x10000 + (X) % 10 * 0x1000000 \ + : 0xffffffffffffffff) /** * Laying out the GDT entries for a TSS for bare metal operation. @@ -165,15 +158,11 @@ HIDDEN(SYM##_desc_ent0 = TSSDESC_ENT0(BASE, LIM)); \ HIDDEN(SYM##_desc_ent1 = TSSDESC_ENT1(BASE)); \ ASSERT((LIM) >= 0 && (LIM) <= 0xffff, "bare metal TSS is suspiciously fat") -#define TSSDESC_ENT0(BASE, LIM) \ - (((LIM) << 0 & 0x000000000000ffff) | \ - ((BASE) << 16 & 0x000000ffffff0000) | \ - 0x89 << 40 | \ - ((LIM) >> 16 << 48 & 0x000f000000000000) | \ - 0x2 << 52 | \ +#define TSSDESC_ENT0(BASE, LIM) \ + (((LIM) << 0 & 0x000000000000ffff) | ((BASE) << 16 & 0x000000ffffff0000) | \ + 0x89 << 40 | ((LIM) >> 16 << 48 & 0x000f000000000000) | 0x2 << 52 | \ ((BASE) >> 24 << 56 & 0xff00000000000000)) -#define TSSDESC_ENT1(BASE) \ - ((BASE) >> 32 << 0 & 0x00000000ffffffff) +#define TSSDESC_ENT1(BASE) ((BASE) >> 32 << 0 & 0x00000000ffffffff) #endif /* __ASSEMBLER__ */ #endif /* APE_MACROS_H_ */ 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/build/bootstrap/ape.aarch64 b/build/bootstrap/ape.aarch64 index 27fd3d7fb..2421e7248 100755 Binary files a/build/bootstrap/ape.aarch64 and b/build/bootstrap/ape.aarch64 differ diff --git a/build/bootstrap/ape.elf b/build/bootstrap/ape.elf index 6a87fd728..5ffffe84b 100755 Binary files a/build/bootstrap/ape.elf and b/build/bootstrap/ape.elf differ diff --git a/build/bootstrap/ape.macho b/build/bootstrap/ape.macho index 42b153c6a..d6d22567b 100755 Binary files a/build/bootstrap/ape.macho and b/build/bootstrap/ape.macho differ diff --git a/build/bootstrap/compile b/build/bootstrap/compile index 9a213f0f0..3fb641378 100755 Binary files a/build/bootstrap/compile and b/build/bootstrap/compile differ diff --git a/build/bootstrap/fixupobj b/build/bootstrap/fixupobj index f63a77fee..b59b55a5b 100755 Binary files a/build/bootstrap/fixupobj and b/build/bootstrap/fixupobj differ diff --git a/build/config.mk b/build/config.mk index 3003b222d..2ba79a156 100644 --- a/build/config.mk +++ b/build/config.mk @@ -11,20 +11,20 @@ # ifeq ($(MODE),) ENABLE_FTRACE = 1 -CONFIG_OFLAGS ?= -g +CONFIG_OFLAGS ?= -g -ggdb CONFIG_CCFLAGS += -O2 $(BACKTRACES) CONFIG_CPPFLAGS += -DSYSDEBUG TARGET_ARCH ?= -msse3 endif ifeq ($(MODE), x86_64) ENABLE_FTRACE = 1 -CONFIG_OFLAGS ?= -g +CONFIG_OFLAGS ?= -g -ggdb CONFIG_CCFLAGS += -O2 $(BACKTRACES) CONFIG_CPPFLAGS += -DSYSDEBUG endif ifeq ($(MODE), aarch64) ENABLE_FTRACE = 1 -CONFIG_OFLAGS ?= -g +CONFIG_OFLAGS ?= -g -ggdb CONFIG_CCFLAGS += -O2 $(BACKTRACES) CONFIG_CPPFLAGS += -DSYSDEBUG endif @@ -38,13 +38,13 @@ endif # ifeq ($(MODE), zero) ENABLE_FTRACE = 1 -CONFIG_OFLAGS ?= -g +CONFIG_OFLAGS ?= -g -ggdb OVERRIDE_CFLAGS += -O0 OVERRIDE_CXXFLAGS += -O0 CONFIG_CPPFLAGS += -DSYSDEBUG endif ifeq ($(MODE), aarch64-zero) -CONFIG_OFLAGS ?= -g +CONFIG_OFLAGS ?= -g -ggdb OVERRIDE_CFLAGS += -O0 -fdce OVERRIDE_CXXFLAGS += -O0 -fdce CONFIG_CPPFLAGS += -DSYSDEBUG @@ -81,7 +81,7 @@ endif # ifeq ($(MODE), opt) ENABLE_FTRACE = 1 -CONFIG_OFLAGS ?= -g +CONFIG_OFLAGS ?= -g -ggdb CONFIG_CPPFLAGS += -DNDEBUG -DSYSDEBUG CONFIG_CCFLAGS += $(BACKTRACES) -O3 -fmerge-all-constants TARGET_ARCH ?= -march=native @@ -98,7 +98,7 @@ endif # - Turns off support for other operating systems # ifeq ($(MODE), optlinux) -CONFIG_OFLAGS ?= -g +CONFIG_OFLAGS ?= -g -ggdb CONFIG_CPPFLAGS += -DNDEBUG -DSYSDEBUG -DSUPPORT_VECTOR=1 CONFIG_CCFLAGS += -O3 -fmerge-all-constants CONFIG_COPTS += -mred-zone @@ -140,7 +140,7 @@ endif # ifeq ($(MODE), asan) ENABLE_FTRACE = 1 -CONFIG_OFLAGS ?= -g +CONFIG_OFLAGS ?= -g -ggdb CONFIG_CPPFLAGS += -D__SANITIZE_ADDRESS__ CONFIG_CCFLAGS += $(BACKTRACES) -O2 -DSYSDEBUG CONFIG_COPTS += -fsanitize=address @@ -160,7 +160,7 @@ endif # ifeq ($(MODE), dbg) ENABLE_FTRACE = 1 -CONFIG_OFLAGS ?= -g +CONFIG_OFLAGS ?= -g -ggdb CONFIG_CPPFLAGS += -DMODE_DBG -D__SANITIZE_ADDRESS__ -D__SANITIZE_UNDEFINED__ CONFIG_CCFLAGS += $(BACKTRACES) -DSYSDEBUG -O0 -fno-inline CONFIG_COPTS += -fsanitize=address -fsanitize=undefined @@ -170,7 +170,7 @@ QUOTA ?= -C64 -L300 endif ifeq ($(MODE), aarch64-dbg) ENABLE_FTRACE = 1 -CONFIG_OFLAGS ?= -g +CONFIG_OFLAGS ?= -g -ggdb CONFIG_CPPFLAGS += -DMODE_DBG -D__SANITIZE_UNDEFINED__ CONFIG_CCFLAGS += $(BACKTRACES) -DSYSDEBUG -O0 -fno-inline -fdce CONFIG_COPTS += -fsanitize=undefined @@ -189,7 +189,7 @@ endif # ifeq ($(MODE), sysv) ENABLE_FTRACE = 1 -CONFIG_OFLAGS ?= -g +CONFIG_OFLAGS ?= -g -ggdb CONFIG_CCFLAGS += $(BACKTRACES) -O2 CONFIG_CPPFLAGS += -DSYSDEBUG -DSUPPORT_VECTOR=121 TARGET_ARCH ?= -msse3 diff --git a/build/definitions.mk b/build/definitions.mk index 9bc6d8c15..2683ffe33 100644 --- a/build/definitions.mk +++ b/build/definitions.mk @@ -60,13 +60,10 @@ TMPSAFE = $(TMPDIR)/ endif BACKTRACES = \ + -fno-schedule-insns2 \ -fno-optimize-sibling-calls \ -mno-omit-leaf-frame-pointer -ifneq ($(ARCH), aarch64) -BACKTRACES += -fno-schedule-insns2 -endif - SANITIZER = \ -fsanitize=address @@ -148,12 +145,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 \ @@ -260,12 +259,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/build/objdump b/build/objdump index e5827019b..f1acb58a5 100755 --- a/build/objdump +++ b/build/objdump @@ -6,14 +6,14 @@ if [ -n "$OBJDUMP" ]; then fi find_objdump() { - if [ -x .cosmocc/3.3.2/bin/$1-linux-cosmo-objdump ]; then - OBJDUMP=.cosmocc/3.3.2/bin/$1-linux-cosmo-objdump - elif [ -x .cosmocc/3.3.2/bin/$1-linux-musl-objdump ]; then - OBJDUMP=.cosmocc/3.3.2/bin/$1-linux-musl-objdump - elif [ -x "$COSMO/.cosmocc/3.3.2/bin/$1-linux-cosmo-objdump" ]; then - OBJDUMP="$COSMO/.cosmocc/3.3.2/bin/$1-linux-cosmo-objdump" - elif [ -x "$COSMO/.cosmocc/3.3.2/bin/$1-linux-musl-objdump" ]; then - OBJDUMP="$COSMO/.cosmocc/3.3.2/bin/$1-linux-musl-objdump" + if [ -x .cosmocc/3.3.5/bin/$1-linux-cosmo-objdump ]; then + OBJDUMP=.cosmocc/3.3.5/bin/$1-linux-cosmo-objdump + elif [ -x .cosmocc/3.3.5/bin/$1-linux-musl-objdump ]; then + OBJDUMP=.cosmocc/3.3.5/bin/$1-linux-musl-objdump + elif [ -x "$COSMO/.cosmocc/3.3.5/bin/$1-linux-cosmo-objdump" ]; then + OBJDUMP="$COSMO/.cosmocc/3.3.5/bin/$1-linux-cosmo-objdump" + elif [ -x "$COSMO/.cosmocc/3.3.5/bin/$1-linux-musl-objdump" ]; then + OBJDUMP="$COSMO/.cosmocc/3.3.5/bin/$1-linux-musl-objdump" else echo "error: toolchain not found (try running 'cosmocc --update' or 'make' in the cosmo monorepo)" >&2 exit 1 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/ctl/.clang-format b/ctl/.clang-format new file mode 100644 index 000000000..5c2c5d239 --- /dev/null +++ b/ctl/.clang-format @@ -0,0 +1,13 @@ +--- +BasedOnStyle: Mozilla +IndentWidth: 4 +ColumnLimit: 80 +--- +Language: Cpp +AllowShortFunctionsOnASingleLine: false +AlignTrailingComments: false +AlignEscapedNewlines: DontAlign +AlwaysBreakTemplateDeclarations: true +ConstructorInitializerAllOnOneLineOrOnePerLine: true +FixNamespaceComments: true +--- diff --git a/ctl/BUILD.mk b/ctl/BUILD.mk new file mode 100644 index 000000000..ac613db1e --- /dev/null +++ b/ctl/BUILD.mk @@ -0,0 +1,48 @@ +#-*-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 += CTL + +CTL_ARTIFACTS += CTL_A +CTL = $(CTL_A_DEPS) $(CTL_A) +CTL_A = o/$(MODE)/ctl/ctl.a +CTL_A_FILES := $(wildcard ctl/*) +CTL_A_HDRS = $(filter %.h,$(CTL_A_FILES)) +CTL_A_SRCS = $(filter %.cc,$(CTL_A_FILES)) +CTL_A_OBJS = $(CTL_A_SRCS:%.cc=o/$(MODE)/%.o) + +CTL_A_CHECKS = \ + $(CTL_A).pkg \ + $(CTL_A_HDRS:%=o/$(MODE)/%.okk) \ + +CTL_A_DIRECTDEPS = \ + LIBC_INTRIN \ + LIBC_MEM \ + LIBC_STR \ + +CTL_A_DEPS := $(call uniq,$(foreach x,$(CTL_A_DIRECTDEPS),$($(x)))) + +$(CTL_A): ctl/ \ + $(CTL_A).pkg \ + $(CTL_A_OBJS) + +$(CTL_A).pkg: \ + $(CTL_A_OBJS) \ + $(foreach x,$(CTL_A_DIRECTDEPS),$($(x)_A).pkg) + +$(CTL_A_OBJS): private \ + OVERRIDE_CXXFLAGS += \ + -Wframe-larger-than=4096 \ + -Walloca-larger-than=4096 \ + -ffunction-sections \ + -fdata-sections \ + +CTL_LIBS = $(foreach x,$(CTL_ARTIFACTS),$($(x))) +CTL_SRCS = $(foreach x,$(CTL_ARTIFACTS),$($(x)_SRCS)) +CTL_HDRS = $(foreach x,$(CTL_ARTIFACTS),$($(x)_HDRS)) +CTL_CHECKS = $(foreach x,$(CTL_ARTIFACTS),$($(x)_CHECKS)) +CTL_OBJS = $(foreach x,$(CTL_ARTIFACTS),$($(x)_OBJS)) +$(CTL_OBJS): $(BUILD_FILES) ctl/BUILD.mk + +.PHONY: o/$(MODE)/ctl +o/$(MODE)/ctl: $(CTL_CHECKS) diff --git a/ctl/README.md b/ctl/README.md new file mode 100644 index 000000000..89b5c9974 --- /dev/null +++ b/ctl/README.md @@ -0,0 +1,5015 @@ +# Cosmopolitan Template Library + +This package provides an STL alternative that's designed to: + +1. Compile 10x faster +2. Solve the GDB debugger pain +3. Symbol names should be simple +4. Method names should be the same as STL +5. Code belongs in .cpp files not in headers +6. Depend on STL headers that aren't slow, e.g. `std::move` +7. Use `stdckdint.h` and `__builtin_trap()` for better safety + +This code is experimental and mostly for Justine to save herself from +the STL trainwreck. That doesn't mean cosmocc users aren't welcome to +use tihs too. You shouldn't expect the design to not change later on. + +## Rationale + +The latency of the Standard Template Library (STL) has gotten out of +control. Below you'll find a table documenting the last ten years of +progress in the C++ language, measured on AMD Ryzen Threadripper PRO +7995WX, the most expensive CPU there is. + +``` +header gcc4.8 gcc4.9 gcc7.2 gcc11 gcc13 clang-19 +------ ------ ------ ------ ----- ----- -------- +chrono 22 23 30 43 519 516 +fstream 72 77 115 167 201 515 +syncstream - - - 7 199 484 +iostream 69 73 104 150 189 461 +strstream 69 72 102 153 190 459 +ostream 64 66 94 138 181 450 +random 100 194 115 211 264 416 +future 157 169 200 241 323 406 +thread 84 88 116 93 253 384 +print - - - - - 370 +functional 58 61 83 126 158 356 +filesystem - - - 279 315 350 +regex 231 299 235 359 320 347 +complex 79 83 117 209 271 342 +complex.h 80 83 121 214 278 341 +ctgmath 12 14 117 207 279 340 +tgmath.h 12 14 119 212 276 339 +format - - - - 364 339 +ccomplex 80 83 118 210 276 338 +queue 38 43 52 72 114 310 +sstream 70 74 104 151 193 298 +iomanip 71 75 133 188 218 297 +istream 68 70 101 146 187 296 +vector 32 34 40 54 102 294 +locale 69 75 113 164 198 276 +condition_variable 73 94 118 178 279 251 +streambuf 51 54 78 120 164 245 +ios 61 64 91 136 178 240 +memory_resource - - - 177 134 223 +mutex 73 77 98 148 94 220 +codecvt - - 76 112 158 208 +algorithm 124 202 42 128 104 200 +shared_mutex - - 122 141 54 198 +bitset 49 52 70 109 147 180 +system_error 48 52 71 113 152 171 +ranges - - - 8 230 170 +string 45 48 66 104 144 168 +unordered_map 62 68 97 89 109 148 +unordered_set 64 68 96 84 107 145 +numeric 11 13 15 28 39 138 +stack 28 31 37 50 93 123 +valarray 147 224 71 211 194 120 +deque 27 30 35 48 93 120 +map 59 62 86 70 93 119 +set 27 32 40 57 92 113 +string_view - - - 48 73 112 +memory 71 75 94 94 228 111 +iterator 68 71 101 121 164 94 +list 22 25 32 45 80 87 +barrier - - - 7 207 86 +mdspan - - - - - 85 +forward_list 73 29 34 45 82 84 +stop_token - - - 7 251 80 +array 47 50 68 35 48 73 +stdatomic.h - - - - 52 69 +atomic 16 17 24 33 51 69 +charconv - - - 34 32 68 +variant - - - 39 43 66 +semaphore - - - 7 76 61 +scoped_allocator 55 56 79 48 68 59 +any - - - 27 24 59 +optional - - - 33 40 58 +latch - - - 7 41 58 +span - - - 7 64 53 +coroutine - - - - 25 51 +tuple 50 53 76 44 63 47 +cmath 13 14 15 79 111 46 +math.h 8 9 14 80 112 44 +utility 12 13 16 21 29 43 +typeindex 8 9 8 10 24 35 +expected - - - - 32 33 +compare - - - 7 24 33 +type_traits 11 12 13 17 18 27 +exception 8 9 17 22 21 24 +concepts - - - 7 19 24 +bit - - - 21 21 21 +new 8 9 16 9 9 18 +cwchar 7 8 7 9 11 18 +typeinfo 8 9 8 9 10 17 +signal.h 7 8 8 9 13 17 +limits 11 12 12 18 15 17 +csignal 8 9 8 10 13 17 +stdlib.h 7 8 8 10 13 16 +ratio 13 14 16 20 20 16 +cstdlib 7 8 7 10 13 16 +threads.h 7 8 8 8 10 15 +stdexcept 47 49 66 108 147 15 +numbers - - - 7 19 15 +initializer_list 7 8 7 9 9 15 +cstdio 7 8 8 9 11 15 +cstddef 7 8 7 9 9 15 +wchar.h 7 8 7 8 10 14 +time.h 7 8 7 8 10 14 +string.h 7 8 7 8 9 14 +stdio.h 7 8 7 8 10 14 +source_location - - - 7 9 14 +iosfwd 8 9 9 10 11 14 +cwctype 7 8 7 9 10 14 +ctype.h 7 8 7 7 9 14 +ctime 8 8 8 9 10 14 +cstring 7 8 7 9 10 14 +cctype 7 8 7 9 10 14 +wctype.h 7 8 7 7 9 13 +uchar.h 6 8 7 7 9 13 +stdint.h 7 7 7 8 9 13 +stddef.h 6 7 7 7 7 13 +locale.h 7 8 7 8 9 13 +inttypes.h 7 8 7 8 9 13 +fenv.h 7 8 7 9 9 13 +execution - - - 282 377 13 +errno.h 7 7 7 7 8 13 +cuchar - - 8 10 11 13 +csetjmp 7 8 7 9 9 13 +climits 6 7 7 9 9 13 +ciso646 6 7 7 8 9 13 +cfenv 7 8 7 9 9 13 +cerrno 7 8 7 9 9 13 +cassert 7 8 7 8 9 13 +assert.h 7 7 7 7 8 13 +version - - - 9 8 12 +stdbool.h 7 7 7 7 7 12 +stdarg.h 6 7 7 7 7 12 +stdalign.h 7 7 7 7 8 12 +limits.h 6 8 7 7 9 12 +float.h 6 7 7 7 7 12 +cstdint 7 8 7 9 9 12 +cstdbool 7 8 7 8 8 12 +clocale 7 7 7 9 9 12 +cinttypes 7 8 7 9 10 12 +cfloat 6 7 7 8 9 12 +stdnoreturn.h 6 7 6 7 7 11 +setjmp.h 7 8 7 7 9 11 +iso646.h 6 7 7 7 7 11 +cstdarg 7 8 7 9 8 11 +text_encoding - - - - - - +stdfloat - - - - 9 - +stacktrace - - - - 217 - +spanstream - - - - 193 - +rcu - - - - - - +linalg - - - - - - +hazard_pointer - - - - - - +generator - - - - - - +flat_set - - - - - - +flat_map - - - - - - +debugging - - - - - - +cstdatomic - - - - - - +cstdalign 7 8 7 8 9 - +``` + +But wait, it gets better! Cosmo has a script that explains the +complexity of transitive includes. Most Cosmopolitan headers are +designed to not include other headers, e.g. `stdio.h`, `calls.h`, +`runtime.h`, `thread.h`, etc. CTL is no exception to this rule. +For example, here's the tool output for `#include `: + +``` +$ tool/scripts/explain-deps.py ctl/string.h +ctl/string.h + ctl/string_view.h +``` + +As we can see, `ctl/string.h` only includes `ctl/string_view.h` and the +string view header includes literally nothing else. + +On the other hand, if we `#include ` for the LLVM libcxx header +containing the `std::string` class, then the compiler needs to consider +4,800 `#include` lines. Most of them are edges it'll discount since +they've already been included but the sum total of files that get +included is 694! + +``` +$ tool/scripts/explain-deps.py string | sed 's/[ \t]*//g' | sort -u | wc -l +694 + +$ tool/scripts/explain-deps.py string +third_party/libcxx/string + third_party/libcxx/compare + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__config_site + libc/isystem/features.h + libc/isystem/features.h + libc/isystem/endian.h + libc/intrin/newbie.h + libc/intrin/bswap.h + libc/sysv/consts/endian.h + third_party/libcxx/__verbose_abort + third_party/libcxx/__availability + third_party/libcxx/__config + third_party/libcxx/__config + third_party/libcxx/__compare/common_comparison_category.h + third_party/libcxx/__compare/ordering.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__config + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/cstddef + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_integral.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/remove_const.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/remove_volatile.h + third_party/libcxx/__config + third_party/libcxx/version + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/stddef.h + third_party/libcxx/__config + libc/isystem/stddef.h + libc/isystem/stddef.h + third_party/libcxx/__compare/compare_partial_order_fallback.h + third_party/libcxx/__compare/ordering.h + third_party/libcxx/__compare/partial_order.h + third_party/libcxx/__compare/compare_three_way.h + third_party/libcxx/__compare/three_way_comparable.h + third_party/libcxx/__compare/common_comparison_category.h + third_party/libcxx/__compare/ordering.h + third_party/libcxx/__concepts/common_reference_with.h + third_party/libcxx/__concepts/convertible_to.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_array.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/is_function.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_const.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_void.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__config + third_party/libcxx/cstddef + third_party/libcxx/__utility/declval.h + third_party/libcxx/__config + third_party/libcxx/cstddef + third_party/libcxx/__utility/declval.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/common_reference.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/common_type.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_pointer.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_referenceable.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/is_void.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/is_array.h + third_party/libcxx/__type_traits/is_function.h + third_party/libcxx/__type_traits/is_referenceable.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__type_traits/remove_extent.h + third_party/libcxx/__config + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__type_traits/void_t.h + third_party/libcxx/__config + third_party/libcxx/__utility/declval.h + third_party/libcxx/__type_traits/copy_cv.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_const.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_cv.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_volatile.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/copy_cvref.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_lvalue_reference.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_referenceable.h + third_party/libcxx/__type_traits/add_rvalue_reference.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_referenceable.h + third_party/libcxx/__type_traits/copy_cv.h + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__concepts/equality_comparable.h + third_party/libcxx/__concepts/boolean_testable.h + third_party/libcxx/__concepts/convertible_to.h + third_party/libcxx/__config + third_party/libcxx/__utility/forward.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__concepts/common_reference_with.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/common_reference.h + third_party/libcxx/__type_traits/make_const_lvalue_ref.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__concepts/totally_ordered.h + third_party/libcxx/__concepts/boolean_testable.h + third_party/libcxx/__concepts/equality_comparable.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/common_reference.h + third_party/libcxx/__type_traits/make_const_lvalue_ref.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/common_reference.h + third_party/libcxx/__type_traits/make_const_lvalue_ref.h + third_party/libcxx/__config + third_party/libcxx/__utility/forward.h + third_party/libcxx/__compare/ordering.h + third_party/libcxx/__compare/weak_order.h + third_party/libcxx/__compare/compare_three_way.h + third_party/libcxx/__compare/ordering.h + third_party/libcxx/__compare/strong_order.h + third_party/libcxx/__bit/bit_cast.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_trivially_copyable.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/cstdint + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/stdint.h + third_party/libcxx/__config + libc/isystem/stdint.h + libc/inttypes.h + libc/limits.h + libc/literal.h + third_party/libcxx/__compare/compare_three_way.h + third_party/libcxx/__compare/ordering.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/priority_tag.h + third_party/libcxx/__config + third_party/libcxx/cstddef + third_party/libcxx/cmath + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_arithmetic.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_floating_point.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__type_traits/is_integral.h + third_party/libcxx/__type_traits/is_constant_evaluated.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_floating_point.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/promote.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/version + third_party/libcxx/math.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_floating_point.h + third_party/libcxx/__type_traits/is_integral.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/promote.h + third_party/libcxx/limits + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_arithmetic.h + third_party/libcxx/__type_traits/is_signed.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_arithmetic.h + third_party/libcxx/__type_traits/is_integral.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__undef_macros + third_party/libcxx/version + third_party/libcxx/type_traits + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__fwd/hash.h + third_party/libcxx/__config + 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/__config + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/nat.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/type_list.h + third_party/libcxx/__config + third_party/libcxx/cstddef + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/aligned_union.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/aligned_storage.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/alignment_of.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/apply_cv.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_const.h + third_party/libcxx/__type_traits/is_volatile.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__type_traits/can_extract_key.h + third_party/libcxx/__config + third_party/libcxx/__fwd/pair.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/remove_const.h + third_party/libcxx/__type_traits/remove_const_ref.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/remove_const.h + third_party/libcxx/__type_traits/remove_reference.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/__config + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__type_traits/dependent_type.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/disjunction.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/extent.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/has_unique_object_representation.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/remove_all_extents.h + third_party/libcxx/__config + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__type_traits/has_virtual_destructor.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/invoke.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_lvalue_reference.h + third_party/libcxx/__type_traits/apply_cv.h + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_base_of.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_core_convertible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_member_function_pointer.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_function.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/is_member_object_pointer.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__type_traits/is_member_function_pointer.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_reference_wrapper.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/is_void.h + third_party/libcxx/__type_traits/nat.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__type_traits/is_abstract.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_aggregate.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.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/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_base_of.h + third_party/libcxx/__type_traits/is_bounded_array.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/is_callable.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__type_traits/is_char_like_type.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/conjunction.h + third_party/libcxx/__type_traits/is_standard_layout.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_trivial.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_class.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_compound.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_fundamental.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_null_pointer.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/is_void.h + third_party/libcxx/__type_traits/is_arithmetic.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/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/__type_traits/is_copy_assignable.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_const.h + third_party/libcxx/__type_traits/add_lvalue_reference.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_copy_constructible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_const.h + third_party/libcxx/__type_traits/add_lvalue_reference.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_default_constructible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_destructible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_function.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/remove_all_extents.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__type_traits/is_empty.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_enum.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_final.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.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/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_default_constructible.h + third_party/libcxx/__type_traits/is_integral.h + third_party/libcxx/__type_traits/is_literal_type.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.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/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_member_function_pointer.h + third_party/libcxx/__type_traits/is_move_assignable.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_lvalue_reference.h + third_party/libcxx/__type_traits/add_rvalue_reference.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_move_constructible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_rvalue_reference.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_nothrow_assignable.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_nothrow_constructible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_constructible.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/is_nothrow_convertible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/conjunction.h + third_party/libcxx/__type_traits/disjunction.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/__type_traits/is_void.h + third_party/libcxx/__type_traits/lazy.h + third_party/libcxx/__config + third_party/libcxx/__utility/declval.h + third_party/libcxx/__type_traits/is_nothrow_copy_assignable.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_const.h + third_party/libcxx/__type_traits/add_lvalue_reference.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_nothrow_copy_constructible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_const.h + third_party/libcxx/__type_traits/add_lvalue_reference.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_nothrow_constructible.h + third_party/libcxx/__type_traits/is_nothrow_default_constructible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_nothrow_destructible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_destructible.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/is_scalar.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_arithmetic.h + third_party/libcxx/__type_traits/is_enum.h + third_party/libcxx/__type_traits/is_member_pointer.h + third_party/libcxx/__type_traits/is_null_pointer.h + third_party/libcxx/__type_traits/is_pointer.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__type_traits/remove_all_extents.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/is_nothrow_move_assignable.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_lvalue_reference.h + third_party/libcxx/__type_traits/add_rvalue_reference.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_nothrow_move_constructible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_rvalue_reference.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_nothrow_constructible.h + third_party/libcxx/__type_traits/is_null_pointer.h + third_party/libcxx/__type_traits/is_object.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_array.h + third_party/libcxx/__type_traits/is_class.h + third_party/libcxx/__type_traits/is_scalar.h + third_party/libcxx/__type_traits/is_union.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_pod.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_pointer.h + third_party/libcxx/__type_traits/is_polymorphic.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.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/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/__type_traits/is_enum.h + third_party/libcxx/__type_traits/underlying_type.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_enum.h + third_party/libcxx/__type_traits/is_signed.h + third_party/libcxx/__type_traits/is_specialization.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_standard_layout.h + third_party/libcxx/__type_traits/is_swappable.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_lvalue_reference.h + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/enable_if.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_move_assignable.h + third_party/libcxx/__type_traits/is_nothrow_move_constructible.h + third_party/libcxx/__type_traits/is_referenceable.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/is_void.h + third_party/libcxx/__type_traits/nat.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/is_trivial.h + third_party/libcxx/__type_traits/is_trivially_assignable.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_trivially_constructible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_trivially_copy_assignable.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_const.h + third_party/libcxx/__type_traits/add_lvalue_reference.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_trivially_copy_constructible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_lvalue_reference.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_trivially_copyable.h + third_party/libcxx/__type_traits/is_trivially_default_constructible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_trivially_destructible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_destructible.h + third_party/libcxx/__type_traits/is_trivially_move_assignable.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_lvalue_reference.h + third_party/libcxx/__type_traits/add_rvalue_reference.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_trivially_move_constructible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_rvalue_reference.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_unbounded_array.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_union.h + third_party/libcxx/__type_traits/is_unsigned.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_arithmetic.h + third_party/libcxx/__type_traits/is_integral.h + third_party/libcxx/__type_traits/is_void.h + third_party/libcxx/__type_traits/is_volatile.h + third_party/libcxx/__type_traits/make_const_lvalue_ref.h + third_party/libcxx/__type_traits/make_signed.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/apply_cv.h + third_party/libcxx/__type_traits/is_enum.h + third_party/libcxx/__type_traits/is_integral.h + third_party/libcxx/__type_traits/nat.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__type_traits/type_list.h + third_party/libcxx/__type_traits/make_unsigned.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/apply_cv.h + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/is_enum.h + third_party/libcxx/__type_traits/is_integral.h + third_party/libcxx/__type_traits/is_unsigned.h + third_party/libcxx/__type_traits/nat.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__type_traits/type_list.h + third_party/libcxx/__type_traits/maybe_const.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/negation.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/rank.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/cstddef + 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_extent.h + third_party/libcxx/__type_traits/remove_pointer.h + third_party/libcxx/__config + 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/__config + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/invoke.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__type_traits/type_identity.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/underlying_type.h + third_party/libcxx/__type_traits/unwrap_ref.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__type_traits/void_t.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/cstddef + third_party/libcxx/cstdint + third_party/libcxx/version + third_party/libcxx/stdlib.h + third_party/libcxx/__config + libc/isystem/stdlib.h + libc/calls/calls.h + libc/calls/termios.h + libc/calls/struct/termios.h + libc/calls/struct/winsize.h + libc/fmt/conv.h + libc/limits.h + libc/mem/alg.h + libc/mem/alloca.h + libc/mem/mem.h + libc/runtime/runtime.h + libc/stdio/dprintf.h + libc/stdio/rand.h + libc/stdlib.h + libc/str/str.h + libc/sysv/consts/exit.h + libc/temp.h + third_party/musl/rand48.h + libc/isystem/stdlib.h + third_party/libcxx/math.h + libc/isystem/math.h + libc/math.h + libc/isystem/math.h + third_party/libcxx/__undef_macros + third_party/libcxx/type_traits + third_party/libcxx/cstdint + third_party/libcxx/limits + third_party/libcxx/__undef_macros + third_party/libcxx/__config + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/priority_tag.h + third_party/libcxx/cmath + third_party/libcxx/__config + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/priority_tag.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/priority_tag.h + third_party/libcxx/__compare/compare_strong_order_fallback.h + third_party/libcxx/__compare/ordering.h + third_party/libcxx/__compare/strong_order.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/priority_tag.h + third_party/libcxx/__compare/compare_three_way.h + third_party/libcxx/__compare/compare_three_way_result.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/make_const_lvalue_ref.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__compare/compare_weak_order_fallback.h + third_party/libcxx/__compare/ordering.h + third_party/libcxx/__compare/weak_order.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/priority_tag.h + third_party/libcxx/__compare/is_eq.h + third_party/libcxx/__compare/ordering.h + third_party/libcxx/__config + 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/ordering.h + third_party/libcxx/__compare/three_way_comparable.h + third_party/libcxx/__concepts/boolean_testable.h + third_party/libcxx/__config + third_party/libcxx/__utility/declval.h + third_party/libcxx/__compare/three_way_comparable.h + third_party/libcxx/__compare/weak_order.h + third_party/libcxx/__config + third_party/libcxx/version + third_party/libcxx/type_traits + third_party/libcxx/initializer_list + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/cstddef + third_party/libcxx/__algorithm/max.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/predicate_traits.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__config + third_party/libcxx/__debug + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_constant_evaluated.h + third_party/libcxx/cstddef + third_party/libcxx/__utility/declval.h + third_party/libcxx/__algorithm/max_element.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__concepts/arithmetic.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_floating_point.h + third_party/libcxx/__type_traits/is_integral.h + third_party/libcxx/__type_traits/is_signed.h + third_party/libcxx/__type_traits/is_signed_integer.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_unsigned_integer.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__concepts/constructible.h + third_party/libcxx/__concepts/convertible_to.h + third_party/libcxx/__concepts/destructible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_nothrow_destructible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_constructible.h + third_party/libcxx/__concepts/convertible_to.h + third_party/libcxx/__concepts/copyable.h + third_party/libcxx/__concepts/assignable.h + third_party/libcxx/__concepts/common_reference_with.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/make_const_lvalue_ref.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__concepts/constructible.h + third_party/libcxx/__concepts/movable.h + third_party/libcxx/__concepts/assignable.h + third_party/libcxx/__concepts/constructible.h + third_party/libcxx/__concepts/swappable.h + third_party/libcxx/__concepts/assignable.h + third_party/libcxx/__concepts/class_or_enum.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_class.h + third_party/libcxx/__type_traits/is_enum.h + third_party/libcxx/__type_traits/is_union.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__concepts/common_reference_with.h + third_party/libcxx/__concepts/constructible.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/extent.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/remove_cvref.h + third_party/libcxx/__utility/exchange.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_nothrow_assignable.h + third_party/libcxx/__type_traits/is_nothrow_move_constructible.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/is_copy_constructible.h + third_party/libcxx/__type_traits/is_nothrow_move_constructible.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/swap.h + third_party/libcxx/__config + 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_move_assignable.h + third_party/libcxx/__type_traits/is_nothrow_move_constructible.h + third_party/libcxx/__type_traits/is_swappable.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/move.h + third_party/libcxx/cstddef + third_party/libcxx/cstddef + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_object.h + third_party/libcxx/__config + third_party/libcxx/__concepts/equality_comparable.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__concepts/totally_ordered.h + third_party/libcxx/__config + third_party/libcxx/__fwd/pair.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__concepts/arithmetic.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/is_object.h + third_party/libcxx/__type_traits/is_primary_template.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/is_valid_expansion.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/make_signed.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/cstddef + third_party/libcxx/__iterator/readable_traits.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/is_array.h + third_party/libcxx/__type_traits/is_object.h + third_party/libcxx/__type_traits/is_primary_template.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/add_const.h + third_party/libcxx/__type_traits/common_reference.h + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/disjunction.h + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/__type_traits/is_object.h + third_party/libcxx/__type_traits/is_primary_template.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/is_valid_expansion.h + third_party/libcxx/__type_traits/remove_const.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__type_traits/void_t.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/cstddef + third_party/libcxx/__config + third_party/libcxx/initializer_list + third_party/libcxx/__undef_macros + third_party/libcxx/__algorithm/min.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__algorithm/min_element.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_callable.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__config + third_party/libcxx/initializer_list + third_party/libcxx/__undef_macros + third_party/libcxx/__algorithm/remove.h + third_party/libcxx/__algorithm/find.h + third_party/libcxx/__algorithm/unwrap_iter.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__memory/pointer_traits.h + third_party/libcxx/__config + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/conjunction.h + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__type_traits/is_class.h + third_party/libcxx/__type_traits/is_function.h + third_party/libcxx/__type_traits/is_void.h + third_party/libcxx/__type_traits/void_t.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_copy_constructible.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__string/constexpr_c_functions.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_constant_evaluated.h + third_party/libcxx/__type_traits/is_equality_comparable.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_integral.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/is_void.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__type_traits/void_t.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/is_trivially_lexicographically_comparable.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/is_unsigned.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__type_traits/void_t.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/cwchar + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__type_traits/apply_cv.h + third_party/libcxx/__type_traits/is_constant_evaluated.h + third_party/libcxx/__type_traits/is_equality_comparable.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/cwctype + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/cctype + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/ctype.h + third_party/libcxx/__config + libc/isystem/ctype.h + libc/str/str.h + third_party/libcxx/wctype.h + third_party/libcxx/__config + libc/isystem/wctype.h + libc/calls/calls.h + libc/fmt/conv.h + libc/str/str.h + third_party/libcxx/wchar.h + third_party/libcxx/__config + third_party/libcxx/stddef.h + third_party/libcxx/__mbstate_t.h + third_party/libcxx/__config + third_party/libcxx/wchar.h + third_party/libcxx/uchar.h + third_party/libcxx/__config + third_party/libcxx/__mbstate_t.h + third_party/libcxx/stddef.h + libc/isystem/uchar.h + libc/str/str.h + libc/isystem/wchar.h + libc/fmt/conv.h + libc/mem/mem.h + libc/stdio/stdio.h + libc/str/str.h + libc/str/unicode.h + libc/time.h + libc/isystem/wchar.h + third_party/libcxx/__algorithm/find_if.h + third_party/libcxx/__config + third_party/libcxx/__config + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/remove_if.h + third_party/libcxx/__algorithm/find_if.h + third_party/libcxx/__config + third_party/libcxx/__utility/move.h + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__debug + third_party/libcxx/__format/enable_insertable.h + third_party/libcxx/__config + third_party/libcxx/__functional/hash.h + third_party/libcxx/__config + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/unary_function.h + third_party/libcxx/__config + third_party/libcxx/__fwd/hash.h + third_party/libcxx/__tuple/sfinae_helpers.h + third_party/libcxx/__config + third_party/libcxx/__fwd/tuple.h + third_party/libcxx/__config + third_party/libcxx/__tuple/make_tuple_types.h + third_party/libcxx/__config + third_party/libcxx/__fwd/array.h + third_party/libcxx/__config + third_party/libcxx/cstddef + third_party/libcxx/__fwd/tuple.h + third_party/libcxx/__tuple/tuple_element.h + third_party/libcxx/__config + third_party/libcxx/__tuple/tuple_indices.h + third_party/libcxx/__config + third_party/libcxx/__utility/integer_sequence.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_integral.h + third_party/libcxx/cstddef + third_party/libcxx/cstddef + third_party/libcxx/__tuple/tuple_types.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_const.h + third_party/libcxx/__type_traits/add_cv.h + third_party/libcxx/__type_traits/add_volatile.h + third_party/libcxx/cstddef + third_party/libcxx/__tuple/tuple_indices.h + third_party/libcxx/__tuple/tuple_size.h + third_party/libcxx/__config + third_party/libcxx/__fwd/tuple.h + third_party/libcxx/__tuple/tuple_types.h + third_party/libcxx/__type_traits/is_const.h + third_party/libcxx/__type_traits/is_volatile.h + third_party/libcxx/cstddef + third_party/libcxx/__tuple/tuple_types.h + third_party/libcxx/__type_traits/apply_cv.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/cstddef + third_party/libcxx/__tuple/tuple_element.h + third_party/libcxx/__tuple/tuple_like_ext.h + third_party/libcxx/__config + third_party/libcxx/__fwd/array.h + third_party/libcxx/__fwd/pair.h + third_party/libcxx/__fwd/tuple.h + third_party/libcxx/__tuple/tuple_types.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/cstddef + third_party/libcxx/__tuple/tuple_size.h + third_party/libcxx/__tuple/tuple_types.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_assignable.h + third_party/libcxx/__type_traits/is_constructible.h + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/is_copy_constructible.h + third_party/libcxx/__type_traits/is_default_constructible.h + third_party/libcxx/__type_traits/is_enum.h + third_party/libcxx/__type_traits/is_move_constructible.h + third_party/libcxx/__type_traits/underlying_type.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__compare/common_comparison_category.h + third_party/libcxx/__compare/synth_three_way.h + third_party/libcxx/__concepts/different_from.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__config + third_party/libcxx/__fwd/array.h + third_party/libcxx/__fwd/get.h + third_party/libcxx/__concepts/copyable.h + third_party/libcxx/__config + third_party/libcxx/__fwd/array.h + third_party/libcxx/__fwd/pair.h + third_party/libcxx/__fwd/subrange.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__concepts/arithmetic.h + third_party/libcxx/__concepts/assignable.h + third_party/libcxx/__concepts/common_reference_with.h + third_party/libcxx/__concepts/constructible.h + third_party/libcxx/__concepts/copyable.h + third_party/libcxx/__concepts/derived_from.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_base_of.h + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/__concepts/equality_comparable.h + third_party/libcxx/__concepts/invocable.h + third_party/libcxx/__config + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__concepts/movable.h + third_party/libcxx/__concepts/predicate.h + third_party/libcxx/__concepts/boolean_testable.h + third_party/libcxx/__concepts/invocable.h + third_party/libcxx/__config + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__concepts/regular.h + third_party/libcxx/__concepts/equality_comparable.h + third_party/libcxx/__concepts/semiregular.h + third_party/libcxx/__concepts/constructible.h + third_party/libcxx/__concepts/copyable.h + third_party/libcxx/__config + third_party/libcxx/__config + third_party/libcxx/__concepts/relation.h + third_party/libcxx/__concepts/predicate.h + third_party/libcxx/__config + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__concepts/semiregular.h + third_party/libcxx/__concepts/totally_ordered.h + third_party/libcxx/__config + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/iter_move.h + third_party/libcxx/__concepts/class_or_enum.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/readable_traits.h + third_party/libcxx/__memory/pointer_traits.h + third_party/libcxx/__type_traits/add_pointer.h + third_party/libcxx/__type_traits/common_reference.h + third_party/libcxx/__type_traits/is_pointer.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__fwd/tuple.h + third_party/libcxx/__tuple/tuple_element.h + third_party/libcxx/cstddef + third_party/libcxx/__fwd/subrange.h + third_party/libcxx/__fwd/tuple.h + third_party/libcxx/__tuple/pair_like.h + third_party/libcxx/__config + third_party/libcxx/__tuple/tuple_like.h + third_party/libcxx/__config + third_party/libcxx/__fwd/array.h + third_party/libcxx/__fwd/pair.h + third_party/libcxx/__fwd/subrange.h + third_party/libcxx/__fwd/tuple.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/cstddef + third_party/libcxx/__tuple/tuple_size.h + third_party/libcxx/__type_traits/remove_cvref.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_size.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/decay.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_assignable.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_default_constructible.h + third_party/libcxx/__type_traits/is_implicitly_default_constructible.h + third_party/libcxx/__type_traits/is_move_assignable.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_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_move_assignable.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/is_swappable.h + third_party/libcxx/__type_traits/nat.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__type_traits/unwrap_ref.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/piecewise_construct.h + third_party/libcxx/__config + third_party/libcxx/cstddef + third_party/libcxx/__utility/swap.h + third_party/libcxx/cstddef + third_party/libcxx/cstdint + third_party/libcxx/cstring + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_constant_evaluated.h + third_party/libcxx/string.h + third_party/libcxx/__config + libc/isystem/string.h + libc/mem/alg.h + libc/mem/mem.h + libc/str/str.h + third_party/libcxx/limits + third_party/libcxx/__functional/unary_function.h + third_party/libcxx/__fwd/string.h + third_party/libcxx/__config + third_party/libcxx/__fwd/memory_resource.h + third_party/libcxx/__config + third_party/libcxx/__ios/fpos.h + third_party/libcxx/__config + third_party/libcxx/iosfwd + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__fwd/fstream.h + third_party/libcxx/__config + third_party/libcxx/__fwd/string.h + third_party/libcxx/__fwd/ios.h + third_party/libcxx/__config + third_party/libcxx/__fwd/string.h + third_party/libcxx/__fwd/istream.h + third_party/libcxx/__config + third_party/libcxx/__fwd/string.h + third_party/libcxx/__fwd/ostream.h + third_party/libcxx/__config + third_party/libcxx/__fwd/string.h + third_party/libcxx/__fwd/sstream.h + third_party/libcxx/__config + third_party/libcxx/__fwd/string.h + third_party/libcxx/__fwd/streambuf.h + third_party/libcxx/__config + third_party/libcxx/__fwd/string.h + third_party/libcxx/__fwd/string.h + third_party/libcxx/__std_mbstate_t.h + third_party/libcxx/__config + third_party/libcxx/__mbstate_t.h + third_party/libcxx/version + third_party/libcxx/__iterator/distance.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__concepts/class_or_enum.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/readable_traits.h + third_party/libcxx/__ranges/enable_borrowed_range.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__utility/auto_cast.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/cstddef + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__concepts/constructible.h + third_party/libcxx/__concepts/movable.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/iter_move.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/readable_traits.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/data.h + third_party/libcxx/__concepts/class_or_enum.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__memory/pointer_traits.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__type_traits/is_object.h + third_party/libcxx/__type_traits/is_pointer.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/remove_pointer.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__utility/auto_cast.h + third_party/libcxx/__ranges/enable_borrowed_range.h + third_party/libcxx/__ranges/enable_view.h + third_party/libcxx/__concepts/derived_from.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_class.h + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__ranges/size.h + third_party/libcxx/__concepts/arithmetic.h + third_party/libcxx/__concepts/class_or_enum.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__type_traits/make_signed.h + third_party/libcxx/__type_traits/make_unsigned.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__utility/auto_cast.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/add_pointer.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/initializer_list + third_party/libcxx/__ranges/size.h + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/reverse_iterator.h + third_party/libcxx/__algorithm/unwrap_iter.h + third_party/libcxx/__compare/compare_three_way_result.h + third_party/libcxx/__compare/three_way_comparable.h + third_party/libcxx/__concepts/convertible_to.h + third_party/libcxx/__config + third_party/libcxx/__iterator/advance.h + third_party/libcxx/__assert + third_party/libcxx/__concepts/assignable.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_integral.h + third_party/libcxx/__utility/convert_to_integral.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_enum.h + third_party/libcxx/__type_traits/is_floating_point.h + third_party/libcxx/__type_traits/underlying_type.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/unreachable.h + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/limits + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/iter_move.h + third_party/libcxx/__iterator/iter_swap.h + third_party/libcxx/__concepts/class_or_enum.h + third_party/libcxx/__concepts/swappable.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iter_move.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/readable_traits.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__iterator/iterator.h + third_party/libcxx/__config + third_party/libcxx/cstddef + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__iterator/advance.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__iterator/prev.h + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__iterator/advance.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__iterator/readable_traits.h + third_party/libcxx/__iterator/segmented_iterator.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/cstddef + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/subrange.h + third_party/libcxx/__assert + 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/different_from.h + third_party/libcxx/__config + third_party/libcxx/__fwd/get.h + third_party/libcxx/__fwd/subrange.h + third_party/libcxx/__iterator/advance.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__config + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__ranges/enable_borrowed_range.h + third_party/libcxx/__ranges/size.h + third_party/libcxx/__ranges/view_interface.h + third_party/libcxx/__assert + third_party/libcxx/__concepts/derived_from.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/prev.h + third_party/libcxx/__memory/pointer_traits.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/empty.h + third_party/libcxx/__concepts/class_or_enum.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/size.h + third_party/libcxx/__type_traits/is_class.h + third_party/libcxx/__type_traits/make_unsigned.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__tuple/pair_like.h + third_party/libcxx/__tuple/tuple_element.h + third_party/libcxx/__tuple/tuple_size.h + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__type_traits/is_pointer.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/make_unsigned.h + third_party/libcxx/__type_traits/remove_const.h + third_party/libcxx/__type_traits/remove_pointer.h + third_party/libcxx/__utility/move.h + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_assignable.h + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/__type_traits/is_nothrow_copy_constructible.h + third_party/libcxx/__type_traits/is_pointer.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__iterator/wrap_iter.h + third_party/libcxx/__config + third_party/libcxx/__debug + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__memory/pointer_traits.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__memory/allocate_at_least.h + third_party/libcxx/__config + third_party/libcxx/__memory/allocator_traits.h + third_party/libcxx/__config + third_party/libcxx/__memory/construct_at.h + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__iterator/access.h + third_party/libcxx/__config + third_party/libcxx/cstddef + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__memory/voidify.h + third_party/libcxx/__config + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_array.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/new + third_party/libcxx/__assert + third_party/libcxx/__availability + third_party/libcxx/__config + third_party/libcxx/__exception/exception.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/alignment_of.h + third_party/libcxx/__type_traits/is_function.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__verbose_abort + third_party/libcxx/cstddef + third_party/libcxx/cstdlib + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/stdlib.h + third_party/libcxx/version + third_party/libcxx/exception + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__exception/exception.h + third_party/libcxx/__exception/exception_ptr.h + third_party/libcxx/__config + third_party/libcxx/__exception/operations.h + third_party/libcxx/__availability + third_party/libcxx/__config + third_party/libcxx/cstddef + third_party/libcxx/__memory/addressof.h + third_party/libcxx/cstddef + third_party/libcxx/cstdlib + third_party/libcxx/__exception/nested_exception.h + third_party/libcxx/__config + third_party/libcxx/__exception/exception_ptr.h + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__type_traits/is_base_of.h + third_party/libcxx/__type_traits/is_class.h + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/__type_traits/is_copy_constructible.h + third_party/libcxx/__type_traits/is_final.h + third_party/libcxx/__type_traits/is_polymorphic.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/cstddef + third_party/libcxx/__exception/operations.h + third_party/libcxx/__exception/terminate.h + third_party/libcxx/__config + third_party/libcxx/version + third_party/libcxx/cstdlib + third_party/libcxx/type_traits + third_party/libcxx/type_traits + third_party/libcxx/__memory/pointer_traits.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_copy_constructible.h + third_party/libcxx/__type_traits/is_empty.h + third_party/libcxx/__type_traits/is_move_constructible.h + third_party/libcxx/__type_traits/make_unsigned.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__type_traits/void_t.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/limits + third_party/libcxx/__undef_macros + third_party/libcxx/cstddef + third_party/libcxx/__memory/allocator.h + third_party/libcxx/__config + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__memory/allocate_at_least.h + third_party/libcxx/__memory/allocator_traits.h + third_party/libcxx/__type_traits/is_constant_evaluated.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/is_void.h + third_party/libcxx/__type_traits/is_volatile.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/cstddef + third_party/libcxx/new + third_party/libcxx/__memory/allocator_traits.h + third_party/libcxx/__memory/compressed_pair.h + third_party/libcxx/__config + third_party/libcxx/__fwd/get.h + third_party/libcxx/__fwd/tuple.h + third_party/libcxx/__tuple/tuple_indices.h + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__type_traits/dependent_type.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_default_constructible.h + third_party/libcxx/__type_traits/is_empty.h + third_party/libcxx/__type_traits/is_final.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/is_swappable.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/piecewise_construct.h + third_party/libcxx/cstddef + third_party/libcxx/__memory/construct_at.h + third_party/libcxx/__memory/pointer_traits.h + third_party/libcxx/__memory/swap_allocator.h + third_party/libcxx/__config + third_party/libcxx/__memory/allocator_traits.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_swappable.h + third_party/libcxx/__utility/swap.h + third_party/libcxx/__memory_resource/polymorphic_allocator.h + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__memory_resource/memory_resource.h + third_party/libcxx/__config + third_party/libcxx/cstddef + third_party/libcxx/__utility/exception_guard.h + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_nothrow_move_constructible.h + third_party/libcxx/__utility/exchange.h + third_party/libcxx/__utility/move.h + third_party/libcxx/cstddef + third_party/libcxx/limits + third_party/libcxx/new + third_party/libcxx/stdexcept + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__exception/exception.h + third_party/libcxx/__verbose_abort + third_party/libcxx/iosfwd + third_party/libcxx/cstdlib + third_party/libcxx/exception + third_party/libcxx/tuple + third_party/libcxx/__assert + third_party/libcxx/__compare/common_comparison_category.h + third_party/libcxx/__compare/synth_three_way.h + third_party/libcxx/__config + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__fwd/array.h + third_party/libcxx/__fwd/tuple.h + third_party/libcxx/__memory/allocator_arg_t.h + third_party/libcxx/__config + third_party/libcxx/__memory/uses_allocator.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_constructible.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__memory/uses_allocator.h + third_party/libcxx/__tuple/make_tuple_types.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_ext.h + third_party/libcxx/__tuple/tuple_size.h + third_party/libcxx/__tuple/tuple_types.h + third_party/libcxx/__type_traits/apply_cv.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_cvref.h + third_party/libcxx/__type_traits/disjunction.h + third_party/libcxx/__type_traits/is_arithmetic.h + third_party/libcxx/__type_traits/is_assignable.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_default_constructible.h + third_party/libcxx/__type_traits/is_empty.h + third_party/libcxx/__type_traits/is_final.h + third_party/libcxx/__type_traits/is_implicitly_default_constructible.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_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_move_assignable.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/is_swappable.h + third_party/libcxx/__type_traits/lazy.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/remove_cvref.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__type_traits/unwrap_ref.h + third_party/libcxx/__utility/forward.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/swap.h + third_party/libcxx/cstddef + third_party/libcxx/version + third_party/libcxx/compare + third_party/libcxx/exception + third_party/libcxx/iosfwd + third_party/libcxx/new + third_party/libcxx/type_traits + third_party/libcxx/typeinfo + third_party/libcxx/__assert + third_party/libcxx/__availability + third_party/libcxx/__config + third_party/libcxx/__exception/exception.h + third_party/libcxx/__type_traits/is_constant_evaluated.h + third_party/libcxx/__verbose_abort + third_party/libcxx/cstddef + third_party/libcxx/cstdint + third_party/libcxx/cstdlib + third_party/libcxx/exception + third_party/libcxx/type_traits + third_party/libcxx/utility + third_party/libcxx/initializer_list + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__utility/as_const.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_const.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/auto_cast.h + third_party/libcxx/__utility/cmp.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/disjunction.h + third_party/libcxx/__type_traits/is_integral.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/is_signed.h + third_party/libcxx/__type_traits/make_unsigned.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/limits + third_party/libcxx/__undef_macros + 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/__config + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/is_const.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__utility/in_place.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/cstddef + 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/__config + third_party/libcxx/__utility/swap.h + third_party/libcxx/__utility/to_underlying.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/underlying_type.h + third_party/libcxx/__utility/unreachable.h + third_party/libcxx/version + third_party/libcxx/compare + third_party/libcxx/initializer_list + third_party/libcxx/__tuple/tuple_element.h + third_party/libcxx/__tuple/tuple_size.h + third_party/libcxx/cstdlib + third_party/libcxx/iosfwd + third_party/libcxx/type_traits + third_party/libcxx/__undef_macros + third_party/libcxx/__string/char_traits.h + third_party/libcxx/__algorithm/copy_n.h + third_party/libcxx/__algorithm/copy.h + third_party/libcxx/__algorithm/copy_move_common.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/iter_swap.h + third_party/libcxx/__config + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/swap.h + third_party/libcxx/__algorithm/ranges_iterator_concept.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__config + third_party/libcxx/__iterator/advance.h + third_party/libcxx/__iterator/distance.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/iter_move.h + third_party/libcxx/__iterator/iter_swap.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/prev.h + third_party/libcxx/__iterator/readable_traits.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/unwrap_iter.h + third_party/libcxx/__algorithm/unwrap_range.h + third_party/libcxx/__algorithm/unwrap_iter.h + third_party/libcxx/__concepts/constructible.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__memory/pointer_traits.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_always_bitcastable.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_integral.h + third_party/libcxx/__type_traits/is_object.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/is_trivially_copyable.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__type_traits/is_constant_evaluated.h + third_party/libcxx/__type_traits/is_copy_constructible.h + third_party/libcxx/__type_traits/is_trivially_assignable.h + third_party/libcxx/__type_traits/is_trivially_copyable.h + third_party/libcxx/__type_traits/is_volatile.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/cstddef + third_party/libcxx/__algorithm/for_each_segment.h + third_party/libcxx/__config + third_party/libcxx/__iterator/segmented_iterator.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/min.h + third_party/libcxx/__config + third_party/libcxx/__iterator/segmented_iterator.h + third_party/libcxx/__type_traits/common_type.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__undef_macros + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__utility/convert_to_integral.h + third_party/libcxx/__algorithm/fill_n.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__utility/convert_to_integral.h + third_party/libcxx/__algorithm/find_end.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/search.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/advance.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_callable.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/advance.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/reverse_iterator.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/find_first_of.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__algorithm/min.h + third_party/libcxx/__compare/ordering.h + third_party/libcxx/__config + third_party/libcxx/__functional/hash.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__string/constexpr_c_functions.h + third_party/libcxx/__type_traits/is_constant_evaluated.h + third_party/libcxx/cstddef + third_party/libcxx/cstdint + third_party/libcxx/cstdio + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/stdio.h + third_party/libcxx/__config + libc/isystem/stdio.h + libc/calls/calls.h + libc/calls/weirdtypes.h + libc/stdio/dprintf.h + libc/stdio/stdio.h + libc/temp.h + third_party/musl/tempnam.h + libc/isystem/stdio.h + third_party/libcxx/iosfwd + third_party/libcxx/cwchar + third_party/libcxx/__undef_macros + third_party/libcxx/__string/extern_template_lists.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_allocator.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/void_t.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/is_array.h + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/__type_traits/is_nothrow_default_constructible.h + third_party/libcxx/__type_traits/is_nothrow_move_assignable.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/is_standard_layout.h + third_party/libcxx/__type_traits/is_trivial.h + third_party/libcxx/__type_traits/noexcept_move_assign_container.h + third_party/libcxx/__config + third_party/libcxx/__memory/allocator_traits.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_nothrow_move_assignable.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__utility/auto_cast.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/swap.h + third_party/libcxx/__utility/unreachable.h + third_party/libcxx/climits + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/limits.h + third_party/libcxx/__config + libc/isystem/limits.h + libc/limits.h + libc/sysv/consts/_posix.h + libc/sysv/consts/iov.h + libc/sysv/consts/limits.h + libc/sysv/consts/xopen.h + libc/thread/thread.h + libc/isystem/limits.h + libc/isystem/limits.h + third_party/libcxx/cstdint + third_party/libcxx/cstdio + third_party/libcxx/cstring + third_party/libcxx/limits + third_party/libcxx/stdexcept + third_party/libcxx/string_view + third_party/libcxx/compare + third_party/libcxx/__algorithm/min.h + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__functional/hash.h + third_party/libcxx/__functional/unary_function.h + third_party/libcxx/__fwd/string_view.h + third_party/libcxx/__config + third_party/libcxx/iosfwd + third_party/libcxx/__iterator/bounded_iter.h + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__memory/pointer_traits.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/readable_traits.h + third_party/libcxx/__iterator/reverse_iterator.h + third_party/libcxx/__memory/pointer_traits.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/data.h + third_party/libcxx/__ranges/enable_borrowed_range.h + third_party/libcxx/__ranges/enable_view.h + third_party/libcxx/__ranges/size.h + third_party/libcxx/__string/char_traits.h + third_party/libcxx/__type_traits/is_array.h + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/is_standard_layout.h + third_party/libcxx/__type_traits/is_trivial.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__type_traits/type_identity.h + third_party/libcxx/cstddef + third_party/libcxx/iosfwd + third_party/libcxx/limits + third_party/libcxx/stdexcept + third_party/libcxx/version + third_party/libcxx/__iterator/access.h + third_party/libcxx/__iterator/data.h + third_party/libcxx/__config + third_party/libcxx/cstddef + third_party/libcxx/initializer_list + third_party/libcxx/__iterator/empty.h + third_party/libcxx/__config + third_party/libcxx/cstddef + third_party/libcxx/initializer_list + third_party/libcxx/__iterator/reverse_access.h + third_party/libcxx/__config + third_party/libcxx/__iterator/reverse_iterator.h + third_party/libcxx/cstddef + third_party/libcxx/initializer_list + third_party/libcxx/__iterator/size.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/common_type.h + third_party/libcxx/__type_traits/make_signed.h + third_party/libcxx/cstddef + third_party/libcxx/compare + third_party/libcxx/__undef_macros + third_party/libcxx/algorithm + third_party/libcxx/initializer_list + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__debug + third_party/libcxx/cstddef + third_party/libcxx/version + third_party/libcxx/__algorithm/adjacent_find.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/all_of.h + third_party/libcxx/__config + third_party/libcxx/__algorithm/any_of.h + third_party/libcxx/__config + third_party/libcxx/__algorithm/binary_search.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__algorithm/lower_bound.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/half_positive.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_integral.h + third_party/libcxx/__type_traits/make_unsigned.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/advance.h + third_party/libcxx/__iterator/distance.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_callable.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__algorithm/clamp.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__assert + third_party/libcxx/__config + 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_move_common.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/min.h + third_party/libcxx/__config + third_party/libcxx/__iterator/segmented_iterator.h + third_party/libcxx/__type_traits/common_type.h + third_party/libcxx/__type_traits/is_copy_constructible.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__undef_macros + third_party/libcxx/__algorithm/copy_if.h + third_party/libcxx/__config + third_party/libcxx/__algorithm/copy_n.h + third_party/libcxx/__algorithm/count.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__algorithm/count_if.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__algorithm/equal.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/unwrap_iter.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/distance.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__string/constexpr_c_functions.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_constant_evaluated.h + third_party/libcxx/__type_traits/is_equality_comparable.h + third_party/libcxx/__type_traits/is_volatile.h + third_party/libcxx/__type_traits/predicate_traits.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/equal_range.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__algorithm/half_positive.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/lower_bound.h + third_party/libcxx/__algorithm/upper_bound.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/half_positive.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/advance.h + third_party/libcxx/__iterator/distance.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_copy_constructible.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/advance.h + third_party/libcxx/__iterator/distance.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__type_traits/is_callable.h + third_party/libcxx/__type_traits/is_copy_constructible.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/fill.h + third_party/libcxx/__algorithm/fill_n.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.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/__config + third_party/libcxx/__algorithm/for_each.h + third_party/libcxx/__algorithm/for_each_segment.h + third_party/libcxx/__config + third_party/libcxx/__iterator/segmented_iterator.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/for_each_n.h + third_party/libcxx/__config + third_party/libcxx/__utility/convert_to_integral.h + third_party/libcxx/__algorithm/generate.h + third_party/libcxx/__config + third_party/libcxx/__algorithm/generate_n.h + third_party/libcxx/__config + third_party/libcxx/__utility/convert_to_integral.h + third_party/libcxx/__algorithm/half_positive.h + third_party/libcxx/__algorithm/in_found_result.h + third_party/libcxx/__concepts/convertible_to.h + third_party/libcxx/__config + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/in_fun_result.h + third_party/libcxx/__concepts/convertible_to.h + third_party/libcxx/__config + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/in_in_out_result.h + third_party/libcxx/__concepts/convertible_to.h + third_party/libcxx/__config + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/in_in_result.h + third_party/libcxx/__concepts/convertible_to.h + third_party/libcxx/__config + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/in_out_out_result.h + third_party/libcxx/__concepts/convertible_to.h + third_party/libcxx/__config + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/in_out_result.h + third_party/libcxx/__concepts/convertible_to.h + third_party/libcxx/__config + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/includes.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_callable.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/inplace_merge.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/lower_bound.h + third_party/libcxx/__algorithm/min.h + third_party/libcxx/__algorithm/move.h + third_party/libcxx/__algorithm/copy_move_common.h + third_party/libcxx/__algorithm/for_each_segment.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/min.h + third_party/libcxx/__config + third_party/libcxx/__iterator/segmented_iterator.h + third_party/libcxx/__type_traits/common_type.h + third_party/libcxx/__type_traits/is_copy_constructible.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__undef_macros + third_party/libcxx/__algorithm/rotate.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/move.h + third_party/libcxx/__algorithm/move_backward.h + third_party/libcxx/__algorithm/copy_move_common.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/min.h + third_party/libcxx/__config + third_party/libcxx/__iterator/segmented_iterator.h + third_party/libcxx/__type_traits/common_type.h + third_party/libcxx/__type_traits/is_copy_constructible.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__undef_macros + third_party/libcxx/__algorithm/swap_ranges.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_trivially_move_assignable.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/upper_bound.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__iterator/advance.h + third_party/libcxx/__iterator/distance.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/reverse_iterator.h + third_party/libcxx/__memory/destruct_n.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_trivially_destructible.h + third_party/libcxx/cstddef + third_party/libcxx/__memory/temporary_buffer.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/alignment_of.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/cstddef + third_party/libcxx/new + third_party/libcxx/__memory/unique_ptr.h + third_party/libcxx/__compare/compare_three_way.h + third_party/libcxx/__compare/compare_three_way_result.h + third_party/libcxx/__compare/three_way_comparable.h + third_party/libcxx/__config + third_party/libcxx/__functional/hash.h + third_party/libcxx/__functional/operations.h + third_party/libcxx/__config + third_party/libcxx/__functional/binary_function.h + third_party/libcxx/__config + third_party/libcxx/__functional/unary_function.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/predicate_traits.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__memory/allocator_traits.h + third_party/libcxx/__memory/auto_ptr.h + third_party/libcxx/__config + third_party/libcxx/__memory/compressed_pair.h + third_party/libcxx/__type_traits/add_lvalue_reference.h + third_party/libcxx/__type_traits/common_type.h + third_party/libcxx/__type_traits/dependent_type.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_array.h + third_party/libcxx/__type_traits/is_assignable.h + third_party/libcxx/__type_traits/is_constructible.h + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/__type_traits/is_default_constructible.h + third_party/libcxx/__type_traits/is_function.h + third_party/libcxx/__type_traits/is_pointer.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/is_swappable.h + third_party/libcxx/__type_traits/is_void.h + third_party/libcxx/__type_traits/remove_extent.h + third_party/libcxx/__type_traits/type_identity.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/cstddef + third_party/libcxx/__utility/pair.h + third_party/libcxx/new + third_party/libcxx/__undef_macros + third_party/libcxx/__algorithm/is_heap.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__algorithm/is_heap_until.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__algorithm/is_heap_until.h + third_party/libcxx/__algorithm/is_partitioned.h + third_party/libcxx/__config + third_party/libcxx/__algorithm/is_permutation.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/distance.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__type_traits/is_callable.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/is_sorted.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__algorithm/is_sorted_until.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__algorithm/is_sorted_until.h + third_party/libcxx/__algorithm/iter_swap.h + third_party/libcxx/__algorithm/lexicographical_compare.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__algorithm/lexicographical_compare_three_way.h + third_party/libcxx/__algorithm/min.h + third_party/libcxx/__algorithm/three_way_comp_ref_type.h + third_party/libcxx/__compare/ordering.h + third_party/libcxx/__config + third_party/libcxx/__debug + third_party/libcxx/__utility/declval.h + third_party/libcxx/__compare/compare_three_way.h + third_party/libcxx/__compare/ordering.h + third_party/libcxx/__concepts/arithmetic.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/common_type.h + third_party/libcxx/__type_traits/is_copy_constructible.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__undef_macros + third_party/libcxx/__algorithm/lower_bound.h + third_party/libcxx/__algorithm/make_heap.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/sift_down.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/max.h + third_party/libcxx/__algorithm/max_element.h + third_party/libcxx/__algorithm/merge.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__algorithm/copy.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.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/__concepts/convertible_to.h + third_party/libcxx/__config + third_party/libcxx/__utility/move.h + third_party/libcxx/__undef_macros + third_party/libcxx/__algorithm/minmax.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/minmax_element.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_callable.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__type_traits/is_callable.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/initializer_list + third_party/libcxx/__algorithm/minmax_element.h + third_party/libcxx/__algorithm/mismatch.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__utility/pair.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/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/reverse.h + third_party/libcxx/__algorithm/iter_swap.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/none_of.h + third_party/libcxx/__config + third_party/libcxx/__algorithm/nth_element.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/sort.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__algorithm/iter_swap.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/min_element.h + third_party/libcxx/__algorithm/partial_sort.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_heap.h + third_party/libcxx/__algorithm/sift_down.h + third_party/libcxx/__algorithm/sort_heap.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/pop_heap.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/push_heap.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_copy_assignable.h + third_party/libcxx/__type_traits/is_copy_constructible.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/sift_down.h + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_copy_assignable.h + third_party/libcxx/__type_traits/is_copy_constructible.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_copy_assignable.h + third_party/libcxx/__type_traits/is_copy_constructible.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__config + third_party/libcxx/__debug + third_party/libcxx/__debug_utils/randomize_range.h + third_party/libcxx/__config + third_party/libcxx/__algorithm/shuffle.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__debug + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__random/uniform_int_distribution.h + third_party/libcxx/__bit/countl.h + third_party/libcxx/__bit/rotate.h + third_party/libcxx/__concepts/arithmetic.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_unsigned_integer.h + third_party/libcxx/limits + third_party/libcxx/__concepts/arithmetic.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_unsigned_integer.h + third_party/libcxx/limits + third_party/libcxx/__undef_macros + third_party/libcxx/__config + third_party/libcxx/__random/is_valid.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/is_unsigned.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/cstdint + third_party/libcxx/__random/log2.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/cstddef + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/make_unsigned.h + third_party/libcxx/cstddef + third_party/libcxx/cstdint + third_party/libcxx/iosfwd + third_party/libcxx/limits + third_party/libcxx/__undef_macros + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/swap.h + third_party/libcxx/cstddef + third_party/libcxx/cstdint + third_party/libcxx/__undef_macros + third_party/libcxx/__type_traits/is_constant_evaluated.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_copy_assignable.h + third_party/libcxx/__type_traits/is_copy_constructible.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/unwrap_iter.h + third_party/libcxx/__assert + third_party/libcxx/__bit/blsr.h + third_party/libcxx/__config + third_party/libcxx/__bit/countl.h + third_party/libcxx/__bit/countr.h + third_party/libcxx/__bit/rotate.h + third_party/libcxx/__concepts/arithmetic.h + third_party/libcxx/__config + third_party/libcxx/limits + third_party/libcxx/__undef_macros + third_party/libcxx/__config + third_party/libcxx/__debug + third_party/libcxx/__debug_utils/randomize_range.h + third_party/libcxx/__functional/operations.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__concepts/equality_comparable.h + third_party/libcxx/__concepts/totally_ordered.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/predicate_traits.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/disjunction.h + third_party/libcxx/__type_traits/is_arithmetic.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/climits + third_party/libcxx/cstdint + third_party/libcxx/__config + third_party/libcxx/__debug + third_party/libcxx/__debug_utils/randomize_range.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/partial_sort.h + third_party/libcxx/__algorithm/partial_sort_copy.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_heap.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_member_pointer.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__algorithm/sift_down.h + third_party/libcxx/__algorithm/sort_heap.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_callable.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/partition.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/partition_copy.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/partition_point.h + third_party/libcxx/__algorithm/half_positive.h + third_party/libcxx/__config + third_party/libcxx/__iterator/advance.h + third_party/libcxx/__iterator/distance.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__algorithm/pop_heap.h + third_party/libcxx/__algorithm/prev_permutation.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/reverse.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/pstl_any_all_none_of.h + third_party/libcxx/__algorithm/pstl_find.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/find.h + third_party/libcxx/__algorithm/pstl_backend.h + third_party/libcxx/__algorithm/pstl_backends/cpu_backend.h + third_party/libcxx/__config + third_party/libcxx/__algorithm/pstl_backends/cpu_backends/any_of.h + third_party/libcxx/__algorithm/any_of.h + third_party/libcxx/__algorithm/find_if.h + third_party/libcxx/__algorithm/pstl_backends/cpu_backends/backend.h + third_party/libcxx/__config + third_party/libcxx/__algorithm/pstl_backends/cpu_backends/serial.h + third_party/libcxx/__config + third_party/libcxx/__algorithm/pstl_backends/cpu_backends/thread.h + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__atomic/atomic.h + third_party/libcxx/__atomic/atomic_base.h + third_party/libcxx/__atomic/atomic_sync.h + third_party/libcxx/__atomic/contention_t.h + third_party/libcxx/__atomic/cxx_atomic_impl.h + third_party/libcxx/__atomic/is_always_lock_free.h + third_party/libcxx/__config + third_party/libcxx/__atomic/memory_order.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/underlying_type.h + third_party/libcxx/__config + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/is_assignable.h + third_party/libcxx/__type_traits/is_trivially_copyable.h + third_party/libcxx/__type_traits/remove_const.h + third_party/libcxx/cstddef + third_party/libcxx/cstring + third_party/libcxx/__config + third_party/libcxx/cstdint + third_party/libcxx/__atomic/cxx_atomic_impl.h + third_party/libcxx/__atomic/memory_order.h + third_party/libcxx/__availability + third_party/libcxx/__chrono/duration.h + third_party/libcxx/__compare/ordering.h + third_party/libcxx/__compare/three_way_comparable.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/common_type.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/__type_traits/is_floating_point.h + third_party/libcxx/limits + third_party/libcxx/ratio + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/climits + third_party/libcxx/cstdint + third_party/libcxx/version + third_party/libcxx/__undef_macros + third_party/libcxx/type_traits + third_party/libcxx/__undef_macros + third_party/libcxx/type_traits + third_party/libcxx/__config + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__thread/poll_with_backoff.h + third_party/libcxx/__availability + third_party/libcxx/__chrono/duration.h + third_party/libcxx/__chrono/high_resolution_clock.h + third_party/libcxx/__chrono/steady_clock.h + third_party/libcxx/__chrono/duration.h + third_party/libcxx/__chrono/time_point.h + third_party/libcxx/__chrono/duration.h + third_party/libcxx/__compare/ordering.h + third_party/libcxx/__compare/three_way_comparable.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/common_type.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/limits + third_party/libcxx/__undef_macros + third_party/libcxx/__config + third_party/libcxx/__chrono/system_clock.h + third_party/libcxx/__chrono/duration.h + third_party/libcxx/__chrono/time_point.h + third_party/libcxx/__config + third_party/libcxx/ctime + third_party/libcxx/__assert + third_party/libcxx/__config + libc/isystem/time.h + libc/calls/calls.h + libc/calls/struct/timespec.h + libc/calls/struct/timeval.h + libc/calls/struct/timespec.h + libc/time.h + libc/calls/weirdtypes.h + libc/sysv/consts/clock.h + libc/sysv/consts/sched.h + libc/sysv/consts/timer.h + libc/time.h + third_party/libcxx/__config + third_party/libcxx/__config + third_party/libcxx/__threading_support + third_party/libcxx/__availability + third_party/libcxx/__chrono/convert_to_timespec.h + third_party/libcxx/__chrono/duration.h + third_party/libcxx/__config + third_party/libcxx/limits + third_party/libcxx/__undef_macros + third_party/libcxx/__chrono/duration.h + third_party/libcxx/__compare/ordering.h + third_party/libcxx/__config + third_party/libcxx/__fwd/hash.h + third_party/libcxx/__thread/poll_with_backoff.h + third_party/libcxx/errno.h + third_party/libcxx/__config + libc/isystem/errno.h + libc/errno.h + third_party/libcxx/iosfwd + third_party/libcxx/limits + third_party/libcxx/__support/ibm/nanosleep.h + libc/isystem/unistd.h + libc/calls/calls.h + libc/calls/weirdtypes.h + libc/runtime/pathconf.h + libc/runtime/runtime.h + libc/runtime/sysconf.h + libc/sysv/consts/f.h + libc/sysv/consts/fileno.h + libc/sysv/consts/o.h + libc/sysv/consts/ok.h + libc/time.h + libc/unistd.h + third_party/getopt/long1.h + third_party/musl/crypt.h + third_party/musl/lockf.h + libc/isystem/pthread.h + libc/calls/weirdtypes.h + libc/sysv/consts/clock.h + libc/thread/thread.h + libc/thread/thread2.h + libc/calls/struct/cpuset.h + libc/calls/struct/sched_param.h + libc/calls/struct/timespec.h + libc/calls/struct/sigset.h + libc/calls/struct/timespec.h + libc/runtime/stack.h + libc/thread/thread.h + libc/isystem/sched.h + libc/calls/calls.h + libc/calls/struct/cpuset.h + libc/calls/struct/sched_param.h + libc/calls/weirdtypes.h + libc/sysv/consts/sched.h + libc/isystem/threads.h + libc/thread/threads.h + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/cstring + third_party/libcxx/__atomic/check_memory_order.h + third_party/libcxx/__config + third_party/libcxx/__atomic/cxx_atomic_impl.h + third_party/libcxx/__atomic/is_always_lock_free.h + third_party/libcxx/__atomic/memory_order.h + third_party/libcxx/__availability + third_party/libcxx/__config + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__type_traits/is_integral.h + third_party/libcxx/__type_traits/is_nothrow_default_constructible.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/version + third_party/libcxx/__atomic/check_memory_order.h + third_party/libcxx/__atomic/cxx_atomic_impl.h + third_party/libcxx/__atomic/memory_order.h + third_party/libcxx/__config + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__type_traits/is_function.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/remove_pointer.h + third_party/libcxx/cstddef + third_party/libcxx/__atomic/memory_order.h + third_party/libcxx/__config + third_party/libcxx/__functional/operations.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_execution_policy.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__utility/terminate_on_exception.h + third_party/libcxx/__config + third_party/libcxx/__exception/terminate.h + third_party/libcxx/cstdint + third_party/libcxx/__algorithm/pstl_backends/cpu_backends/fill.h + third_party/libcxx/__algorithm/fill.h + third_party/libcxx/__algorithm/pstl_backends/cpu_backends/backend.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_execution_policy.h + third_party/libcxx/__utility/terminate_on_exception.h + third_party/libcxx/__algorithm/pstl_backends/cpu_backends/find_if.h + third_party/libcxx/__algorithm/find_if.h + third_party/libcxx/__algorithm/pstl_backends/cpu_backends/backend.h + third_party/libcxx/__atomic/atomic.h + third_party/libcxx/__config + third_party/libcxx/__functional/operations.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_execution_policy.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__utility/terminate_on_exception.h + third_party/libcxx/cstddef + third_party/libcxx/__algorithm/pstl_backends/cpu_backends/for_each.h + third_party/libcxx/__algorithm/for_each.h + third_party/libcxx/__algorithm/pstl_backends/cpu_backends/backend.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_execution_policy.h + third_party/libcxx/__utility/terminate_on_exception.h + third_party/libcxx/__algorithm/pstl_backends/cpu_backends/merge.h + third_party/libcxx/__algorithm/merge.h + third_party/libcxx/__algorithm/pstl_backends/cpu_backends/backend.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_execution_policy.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/terminate_on_exception.h + third_party/libcxx/__algorithm/pstl_backends/cpu_backends/transform.h + third_party/libcxx/__algorithm/pstl_backends/cpu_backends/backend.h + third_party/libcxx/__algorithm/transform.h + third_party/libcxx/__config + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_execution_policy.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__utility/terminate_on_exception.h + third_party/libcxx/__config + third_party/libcxx/execution + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_execution_policy.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/version + third_party/libcxx/__algorithm/pstl_frontend_dispatch.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_callable.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_execution_policy.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__utility/terminate_on_exception.h + third_party/libcxx/__algorithm/pstl_frontend_dispatch.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_execution_policy.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__utility/terminate_on_exception.h + third_party/libcxx/__algorithm/pstl_copy.h + third_party/libcxx/__algorithm/copy_n.h + third_party/libcxx/__algorithm/pstl_transform.h + third_party/libcxx/__algorithm/pstl_backend.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_execution_policy.h + third_party/libcxx/__utility/terminate_on_exception.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_constant_evaluated.h + third_party/libcxx/__type_traits/is_execution_policy.h + third_party/libcxx/__type_traits/is_trivially_copyable.h + third_party/libcxx/__algorithm/pstl_fill.h + third_party/libcxx/__algorithm/fill_n.h + third_party/libcxx/__algorithm/pstl_for_each.h + third_party/libcxx/__algorithm/for_each.h + third_party/libcxx/__algorithm/for_each_n.h + third_party/libcxx/__algorithm/pstl_backend.h + third_party/libcxx/__algorithm/pstl_frontend_dispatch.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_execution_policy.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__type_traits/void_t.h + third_party/libcxx/__utility/terminate_on_exception.h + third_party/libcxx/__algorithm/pstl_frontend_dispatch.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/is_execution_policy.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__utility/terminate_on_exception.h + third_party/libcxx/__algorithm/pstl_find.h + third_party/libcxx/__algorithm/pstl_for_each.h + third_party/libcxx/__algorithm/pstl_merge.h + third_party/libcxx/__algorithm/pstl_backend.h + third_party/libcxx/__config + third_party/libcxx/__functional/operations.h + third_party/libcxx/__type_traits/is_execution_policy.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__algorithm/pstl_transform.h + third_party/libcxx/__algorithm/push_heap.h + third_party/libcxx/__algorithm/ranges_adjacent_find.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_all_of.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_any_of.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_binary_search.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/lower_bound.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__algorithm/ranges_clamp.h + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__algorithm/ranges_copy.h + third_party/libcxx/__algorithm/copy.h + third_party/libcxx/__algorithm/in_out_result.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/ranges_copy_backward.h + third_party/libcxx/__algorithm/copy_backward.h + third_party/libcxx/__algorithm/in_out_result.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_copy_if.h + third_party/libcxx/__algorithm/in_out_result.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_copy_n.h + third_party/libcxx/__algorithm/copy.h + third_party/libcxx/__algorithm/in_out_result.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/ranges_copy.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/unreachable_sentinel.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/wrap_iter.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_count.h + third_party/libcxx/__algorithm/ranges_count_if.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_count_if.h + third_party/libcxx/__algorithm/ranges_equal.h + third_party/libcxx/__algorithm/equal.h + third_party/libcxx/__algorithm/unwrap_range.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/distance.h + third_party/libcxx/__iterator/indirectly_comparable.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_equal_range.h + third_party/libcxx/__algorithm/equal_range.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__ranges/subrange.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/ranges_fill.h + third_party/libcxx/__algorithm/ranges_fill_n.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__algorithm/ranges_fill_n.h + third_party/libcxx/__algorithm/ranges_find.h + third_party/libcxx/__algorithm/find.h + third_party/libcxx/__algorithm/ranges_find_if.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/unwrap_range.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_find_end.h + third_party/libcxx/__algorithm/find_end.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/ranges_iterator_concept.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/indirectly_comparable.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/subrange.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/ranges_find_first_of.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/indirectly_comparable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_find_if.h + third_party/libcxx/__algorithm/ranges_find_if_not.h + third_party/libcxx/__algorithm/ranges_find_if.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_for_each.h + third_party/libcxx/__algorithm/in_fun_result.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_for_each_n.h + third_party/libcxx/__algorithm/in_fun_result.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_generate.h + third_party/libcxx/__concepts/constructible.h + third_party/libcxx/__concepts/invocable.h + third_party/libcxx/__config + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_generate_n.h + third_party/libcxx/__concepts/constructible.h + third_party/libcxx/__concepts/invocable.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_includes.h + third_party/libcxx/__algorithm/includes.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_inplace_merge.h + third_party/libcxx/__algorithm/inplace_merge.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__iterator/sortable.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/permutable.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iter_swap.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_is_heap.h + third_party/libcxx/__algorithm/is_heap_until.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_is_heap_until.h + third_party/libcxx/__algorithm/is_heap_until.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_is_partitioned.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/indirectly_comparable.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_is_permutation.h + third_party/libcxx/__algorithm/is_permutation.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/distance.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_is_sorted.h + third_party/libcxx/__algorithm/ranges_is_sorted_until.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_is_sorted_until.h + third_party/libcxx/__algorithm/ranges_lexicographical_compare.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_lower_bound.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/lower_bound.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/advance.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__algorithm/ranges_make_heap.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_heap.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__iterator/sortable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_max.h + third_party/libcxx/__algorithm/ranges_min_element.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__assert + third_party/libcxx/__concepts/copyable.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__type_traits/is_trivially_copyable.h + third_party/libcxx/__utility/move.h + third_party/libcxx/initializer_list + third_party/libcxx/__undef_macros + third_party/libcxx/__algorithm/ranges_max_element.h + third_party/libcxx/__algorithm/ranges_min_element.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__algorithm/ranges_merge.h + third_party/libcxx/__algorithm/in_in_out_result.h + third_party/libcxx/__algorithm/ranges_copy.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/mergeable.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_min.h + third_party/libcxx/__algorithm/ranges_min_element.h + third_party/libcxx/__assert + third_party/libcxx/__concepts/copyable.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__type_traits/is_trivially_copyable.h + third_party/libcxx/initializer_list + third_party/libcxx/__undef_macros + third_party/libcxx/__algorithm/ranges_min_element.h + third_party/libcxx/__algorithm/ranges_minmax.h + third_party/libcxx/__algorithm/min_max_result.h + third_party/libcxx/__algorithm/minmax_element.h + third_party/libcxx/__assert + third_party/libcxx/__concepts/copyable.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/initializer_list + third_party/libcxx/__undef_macros + third_party/libcxx/__algorithm/ranges_minmax_element.h + third_party/libcxx/__algorithm/min_max_result.h + third_party/libcxx/__algorithm/minmax_element.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/ranges_mismatch.h + third_party/libcxx/__algorithm/in_in_result.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/indirectly_comparable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_move.h + third_party/libcxx/__algorithm/in_out_result.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/move.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_move_backward.h + third_party/libcxx/__algorithm/in_out_result.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/move_backward.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iter_move.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_next_permutation.h + third_party/libcxx/__algorithm/in_found_result.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__algorithm/next_permutation.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/sortable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/ranges_none_of.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_nth_element.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__algorithm/nth_element.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__iterator/sortable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_partial_sort.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__algorithm/partial_sort.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__iterator/sortable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/ranges_partial_sort_copy.h + third_party/libcxx/__algorithm/in_out_result.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__algorithm/partial_sort_copy.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__iterator/sortable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/ranges_partition.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__algorithm/partition.h + third_party/libcxx/__algorithm/ranges_iterator_concept.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/permutable.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/subrange.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/ranges_partition_copy.h + third_party/libcxx/__algorithm/in_out_out_result.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_partition_point.h + third_party/libcxx/__algorithm/half_positive.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/distance.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_pop_heap.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__algorithm/pop_heap.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__iterator/sortable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_prev_permutation.h + third_party/libcxx/__algorithm/in_found_result.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__algorithm/prev_permutation.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/sortable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/ranges_push_heap.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__algorithm/push_heap.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__iterator/sortable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_remove.h + third_party/libcxx/__config + third_party/libcxx/__algorithm/ranges_remove_if.h + third_party/libcxx/__config + third_party/libcxx/__algorithm/ranges_find_if.h + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iter_move.h + third_party/libcxx/__iterator/permutable.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/subrange.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/permutable.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/subrange.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_remove_copy.h + third_party/libcxx/__algorithm/in_out_result.h + third_party/libcxx/__algorithm/ranges_remove_copy_if.h + third_party/libcxx/__algorithm/in_out_result.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__algorithm/remove_copy_if.h + third_party/libcxx/__config + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.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_if.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_replace_copy.h + third_party/libcxx/__algorithm/in_out_result.h + third_party/libcxx/__algorithm/ranges_replace_copy_if.h + third_party/libcxx/__algorithm/in_out_result.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.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/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iter_swap.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/permutable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__algorithm/ranges_reverse_copy.h + third_party/libcxx/__algorithm/in_out_result.h + third_party/libcxx/__algorithm/ranges_copy.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/reverse_iterator.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__ranges/subrange.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_rotate.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/ranges_iterator_concept.h + third_party/libcxx/__algorithm/rotate.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/permutable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/subrange.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_rotate_copy.h + third_party/libcxx/__algorithm/in_out_result.h + third_party/libcxx/__algorithm/ranges_copy.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/reverse_iterator.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_sample.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/sample.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/min.h + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__iterator/distance.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__random/uniform_int_distribution.h + third_party/libcxx/__type_traits/common_type.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__undef_macros + third_party/libcxx/__algorithm/uniform_random_bit_generator_adaptor.h + third_party/libcxx/__config + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__undef_macros + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__random/uniform_random_bit_generator.h + third_party/libcxx/__concepts/arithmetic.h + third_party/libcxx/__concepts/invocable.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__undef_macros + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_search.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/search.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/advance.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/distance.h + third_party/libcxx/__iterator/indirectly_comparable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/size.h + third_party/libcxx/__ranges/subrange.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/ranges_search_n.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/search_n.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/advance.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/distance.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__type_traits/is_callable.h + third_party/libcxx/__utility/convert_to_integral.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/advance.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/distance.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/indirectly_comparable.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/size.h + third_party/libcxx/__ranges/subrange.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/ranges_set_difference.h + third_party/libcxx/__algorithm/in_out_result.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__algorithm/set_difference.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/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/mergeable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__type_traits/decay.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/ranges_set_intersection.h + third_party/libcxx/__algorithm/in_in_out_result.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__algorithm/set_intersection.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/mergeable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_set_symmetric_difference.h + third_party/libcxx/__algorithm/in_in_out_result.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__algorithm/set_symmetric_difference.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/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/mergeable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_set_union.h + third_party/libcxx/__algorithm/in_in_out_result.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__algorithm/set_union.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/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/mergeable.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_shuffle.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/shuffle.h + third_party/libcxx/__algorithm/uniform_random_bit_generator_adaptor.h + third_party/libcxx/__config + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/permutable.h + third_party/libcxx/__random/uniform_random_bit_generator.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_sort.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__algorithm/sort.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__iterator/sortable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_sort_heap.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__algorithm/sort_heap.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__iterator/sortable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_stable_partition.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__algorithm/ranges_iterator_concept.h + third_party/libcxx/__algorithm/stable_partition.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/rotate.h + third_party/libcxx/__config + third_party/libcxx/__iterator/advance.h + third_party/libcxx/__iterator/distance.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__memory/destruct_n.h + third_party/libcxx/__memory/temporary_buffer.h + third_party/libcxx/__memory/unique_ptr.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/new + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/permutable.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__ranges/subrange.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_stable_sort.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__algorithm/stable_sort.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/comp_ref_type.h + third_party/libcxx/__algorithm/inplace_merge.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/sort.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__memory/destruct_n.h + third_party/libcxx/__memory/temporary_buffer.h + third_party/libcxx/__memory/unique_ptr.h + third_party/libcxx/__type_traits/is_trivially_copy_assignable.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/new + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__iterator/sortable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_starts_with.h + third_party/libcxx/__algorithm/in_in_result.h + third_party/libcxx/__algorithm/ranges_mismatch.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/indirectly_comparable.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_swap_ranges.h + third_party/libcxx/__algorithm/in_in_result.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/swap_ranges.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iter_swap.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_transform.h + third_party/libcxx/__algorithm/in_in_out_result.h + third_party/libcxx/__algorithm/in_out_result.h + third_party/libcxx/__concepts/constructible.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__algorithm/ranges_unique.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__algorithm/unique.h + third_party/libcxx/__algorithm/adjacent_find.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/permutable.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__ranges/subrange.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/ranges_unique_copy.h + third_party/libcxx/__algorithm/in_out_result.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/make_projected.h + third_party/libcxx/__algorithm/unique_copy.h + third_party/libcxx/__algorithm/comp.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/is_base_of.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__iterator/readable_traits.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/__algorithm/ranges_upper_bound.h + third_party/libcxx/__algorithm/iterator_operations.h + third_party/libcxx/__algorithm/lower_bound.h + third_party/libcxx/__config + third_party/libcxx/__functional/identity.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/ranges_operations.h + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/projected.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__algorithm/remove.h + third_party/libcxx/__algorithm/remove_copy.h + third_party/libcxx/__config + third_party/libcxx/__algorithm/remove_copy_if.h + third_party/libcxx/__algorithm/remove_if.h + third_party/libcxx/__algorithm/replace.h + third_party/libcxx/__config + third_party/libcxx/__algorithm/replace_copy.h + third_party/libcxx/__config + third_party/libcxx/__algorithm/replace_copy_if.h + third_party/libcxx/__config + third_party/libcxx/__algorithm/replace_if.h + third_party/libcxx/__config + third_party/libcxx/__algorithm/reverse.h + third_party/libcxx/__algorithm/reverse_copy.h + third_party/libcxx/__config + third_party/libcxx/__algorithm/rotate.h + third_party/libcxx/__algorithm/rotate_copy.h + third_party/libcxx/__algorithm/copy.h + third_party/libcxx/__config + 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/move.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__algorithm/shift_right.h + third_party/libcxx/__algorithm/move.h + third_party/libcxx/__algorithm/move_backward.h + third_party/libcxx/__algorithm/swap_ranges.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__utility/swap.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/transform.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/upper_bound.h + third_party/libcxx/initializer_list + third_party/libcxx/atomic + third_party/libcxx/__assert + third_party/libcxx/__atomic/aliases.h + third_party/libcxx/__atomic/atomic.h + third_party/libcxx/__atomic/atomic_lock_free.h + third_party/libcxx/__config + third_party/libcxx/__atomic/contention_t.h + third_party/libcxx/__atomic/is_always_lock_free.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/cstddef + third_party/libcxx/cstdint + third_party/libcxx/cstdlib + 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_sync.h + third_party/libcxx/__atomic/contention_t.h + third_party/libcxx/__atomic/cxx_atomic_impl.h + third_party/libcxx/__atomic/memory_order.h + third_party/libcxx/__chrono/duration.h + third_party/libcxx/__config + third_party/libcxx/__threading_support + third_party/libcxx/cstdint + third_party/libcxx/__atomic/atomic_init.h + third_party/libcxx/__config + 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/cxx_atomic_impl.h + third_party/libcxx/__atomic/memory_order.h + third_party/libcxx/__config + third_party/libcxx/__atomic/is_always_lock_free.h + third_party/libcxx/__atomic/kill_dependency.h + third_party/libcxx/__config + third_party/libcxx/__atomic/memory_order.h + third_party/libcxx/__config + third_party/libcxx/version + third_party/libcxx/cmath + third_party/libcxx/compare + third_party/libcxx/cstring + third_party/libcxx/type_traits + third_party/libcxx/bit + third_party/libcxx/__assert + third_party/libcxx/__bit/bit_cast.h + third_party/libcxx/__bit/bit_ceil.h + third_party/libcxx/__assert + third_party/libcxx/__bit/countl.h + third_party/libcxx/__concepts/arithmetic.h + third_party/libcxx/__config + third_party/libcxx/limits + third_party/libcxx/__bit/bit_floor.h + third_party/libcxx/__bit/bit_log2.h + third_party/libcxx/__bit/countl.h + third_party/libcxx/__concepts/arithmetic.h + third_party/libcxx/__config + third_party/libcxx/limits + third_party/libcxx/__concepts/arithmetic.h + third_party/libcxx/__config + third_party/libcxx/limits + third_party/libcxx/__bit/bit_log2.h + third_party/libcxx/__bit/bit_width.h + third_party/libcxx/__bit/bit_log2.h + third_party/libcxx/__concepts/arithmetic.h + third_party/libcxx/__config + third_party/libcxx/__bit/blsr.h + third_party/libcxx/__bit/byteswap.h + third_party/libcxx/__concepts/arithmetic.h + third_party/libcxx/__config + third_party/libcxx/cstdint + third_party/libcxx/__bit/countl.h + third_party/libcxx/__bit/countr.h + third_party/libcxx/__bit/endian.h + third_party/libcxx/__config + third_party/libcxx/__bit/has_single_bit.h + third_party/libcxx/__concepts/arithmetic.h + third_party/libcxx/__config + third_party/libcxx/__undef_macros + third_party/libcxx/__bit/popcount.h + third_party/libcxx/__bit/rotate.h + third_party/libcxx/__concepts/arithmetic.h + third_party/libcxx/__config + third_party/libcxx/limits + third_party/libcxx/__undef_macros + third_party/libcxx/__bit/rotate.h + third_party/libcxx/__config + third_party/libcxx/version + third_party/libcxx/cstdlib + third_party/libcxx/iosfwd + third_party/libcxx/limits + third_party/libcxx/type_traits + third_party/libcxx/concepts + third_party/libcxx/__assert + 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/common_reference_with.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__type_traits/add_lvalue_reference.h + third_party/libcxx/__type_traits/common_reference.h + third_party/libcxx/__type_traits/common_type.h + third_party/libcxx/__utility/declval.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/__config + third_party/libcxx/version + third_party/libcxx/type_traits + third_party/libcxx/cstdlib + third_party/libcxx/cstring + third_party/libcxx/iterator + third_party/libcxx/concepts + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__debug + third_party/libcxx/__iterator/access.h + third_party/libcxx/__iterator/advance.h + third_party/libcxx/__iterator/back_insert_iterator.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__utility/move.h + third_party/libcxx/cstddef + third_party/libcxx/__iterator/bounded_iter.h + third_party/libcxx/__iterator/common_iterator.h + third_party/libcxx/__assert + third_party/libcxx/__concepts/assignable.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/equality_comparable.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/iter_move.h + third_party/libcxx/__iterator/iter_swap.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/readable_traits.h + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__type_traits/is_pointer.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/variant + third_party/libcxx/__assert + third_party/libcxx/__availability + third_party/libcxx/__compare/common_comparison_category.h + third_party/libcxx/__compare/compare_three_way_result.h + third_party/libcxx/__compare/three_way_comparable.h + third_party/libcxx/__config + third_party/libcxx/__exception/exception.h + third_party/libcxx/__functional/hash.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/operations.h + third_party/libcxx/__functional/unary_function.h + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__type_traits/add_const.h + third_party/libcxx/__type_traits/add_cv.h + third_party/libcxx/__type_traits/add_pointer.h + third_party/libcxx/__type_traits/add_volatile.h + third_party/libcxx/__type_traits/dependent_type.h + third_party/libcxx/__type_traits/is_array.h + third_party/libcxx/__type_traits/is_destructible.h + third_party/libcxx/__type_traits/is_nothrow_move_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_destructible.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_void.h + third_party/libcxx/__type_traits/remove_const.h + third_party/libcxx/__type_traits/type_identity.h + third_party/libcxx/__type_traits/void_t.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/in_place.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/swap.h + third_party/libcxx/__variant/monostate.h + third_party/libcxx/__compare/ordering.h + third_party/libcxx/__config + third_party/libcxx/__functional/hash.h + third_party/libcxx/cstddef + third_party/libcxx/__verbose_abort + third_party/libcxx/initializer_list + third_party/libcxx/limits + third_party/libcxx/new + third_party/libcxx/tuple + third_party/libcxx/version + third_party/libcxx/compare + third_party/libcxx/__undef_macros + third_party/libcxx/exception + third_party/libcxx/type_traits + third_party/libcxx/typeinfo + third_party/libcxx/utility + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/counted_iterator.h + third_party/libcxx/__assert + third_party/libcxx/__concepts/assignable.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/same_as.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/default_sentinel.h + third_party/libcxx/__config + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/iter_move.h + third_party/libcxx/__iterator/iter_swap.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/readable_traits.h + third_party/libcxx/__memory/pointer_traits.h + third_party/libcxx/__type_traits/add_pointer.h + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__utility/move.h + third_party/libcxx/compare + 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/__config + third_party/libcxx/__iterator/front_insert_iterator.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__utility/move.h + third_party/libcxx/cstddef + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/indirectly_comparable.h + third_party/libcxx/__iterator/insert_iterator.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__utility/move.h + third_party/libcxx/cstddef + third_party/libcxx/__iterator/istream_iterator.h + third_party/libcxx/__config + third_party/libcxx/__iterator/default_sentinel.h + third_party/libcxx/__iterator/iterator.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__memory/addressof.h + third_party/libcxx/cstddef + third_party/libcxx/iosfwd + third_party/libcxx/__iterator/istreambuf_iterator.h + third_party/libcxx/__config + third_party/libcxx/__iterator/default_sentinel.h + third_party/libcxx/__iterator/iterator.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/iosfwd + 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/mergeable.h + third_party/libcxx/__iterator/move_iterator.h + third_party/libcxx/__compare/compare_three_way_result.h + third_party/libcxx/__compare/three_way_comparable.h + third_party/libcxx/__concepts/assignable.h + third_party/libcxx/__concepts/convertible_to.h + third_party/libcxx/__concepts/derived_from.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/iter_move.h + third_party/libcxx/__iterator/iter_swap.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/move_sentinel.h + third_party/libcxx/__concepts/assignable.h + third_party/libcxx/__concepts/convertible_to.h + third_party/libcxx/__concepts/semiregular.h + third_party/libcxx/__config + third_party/libcxx/__utility/move.h + third_party/libcxx/__iterator/readable_traits.h + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_assignable.h + third_party/libcxx/__type_traits/is_constructible.h + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__iterator/move_sentinel.h + third_party/libcxx/__iterator/next.h + third_party/libcxx/__iterator/ostream_iterator.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__memory/addressof.h + third_party/libcxx/cstddef + third_party/libcxx/iosfwd + third_party/libcxx/__iterator/ostreambuf_iterator.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/cstddef + third_party/libcxx/iosfwd + 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/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/__memory/addressof.h + third_party/libcxx/__memory/pointer_traits.h + third_party/libcxx/cstddef + third_party/libcxx/initializer_list + third_party/libcxx/version + third_party/libcxx/compare + third_party/libcxx/concepts + third_party/libcxx/cstdlib + third_party/libcxx/exception + third_party/libcxx/new + third_party/libcxx/type_traits + third_party/libcxx/typeinfo + third_party/libcxx/utility + third_party/libcxx/memory + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__memory/align.h + third_party/libcxx/__config + third_party/libcxx/cstddef + third_party/libcxx/__memory/allocate_at_least.h + third_party/libcxx/__memory/allocation_guard.h + third_party/libcxx/__config + third_party/libcxx/__memory/allocator_traits.h + third_party/libcxx/__utility/move.h + third_party/libcxx/cstddef + third_party/libcxx/__memory/allocator.h + third_party/libcxx/__memory/allocator_arg_t.h + third_party/libcxx/__memory/allocator_traits.h + third_party/libcxx/__memory/assume_aligned.h + third_party/libcxx/__assert + third_party/libcxx/__config + third_party/libcxx/__type_traits/is_constant_evaluated.h + third_party/libcxx/cstddef + third_party/libcxx/cstdint + third_party/libcxx/__memory/auto_ptr.h + third_party/libcxx/__memory/compressed_pair.h + third_party/libcxx/__memory/concepts.h + third_party/libcxx/__concepts/same_as.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/readable_traits.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__memory/construct_at.h + third_party/libcxx/__memory/pointer_traits.h + third_party/libcxx/__memory/ranges_construct_at.h + third_party/libcxx/__concepts/destructible.h + third_party/libcxx/__config + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/readable_traits.h + third_party/libcxx/__memory/concepts.h + third_party/libcxx/__memory/construct_at.h + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/new + third_party/libcxx/__memory/ranges_uninitialized_algorithms.h + third_party/libcxx/__algorithm/in_out_result.h + third_party/libcxx/__concepts/constructible.h + third_party/libcxx/__config + third_party/libcxx/__iterator/concepts.h + third_party/libcxx/__iterator/incrementable_traits.h + third_party/libcxx/__iterator/iter_move.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/readable_traits.h + third_party/libcxx/__memory/concepts.h + third_party/libcxx/__memory/uninitialized_algorithms.h + third_party/libcxx/__algorithm/copy.h + third_party/libcxx/__algorithm/move.h + third_party/libcxx/__algorithm/unwrap_iter.h + third_party/libcxx/__algorithm/unwrap_range.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__iterator/reverse_iterator.h + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__memory/allocator_traits.h + third_party/libcxx/__memory/construct_at.h + third_party/libcxx/__memory/pointer_traits.h + third_party/libcxx/__memory/voidify.h + third_party/libcxx/__type_traits/extent.h + third_party/libcxx/__type_traits/is_array.h + third_party/libcxx/__type_traits/is_constant_evaluated.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_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/negation.h + third_party/libcxx/__type_traits/remove_const.h + third_party/libcxx/__type_traits/remove_extent.h + third_party/libcxx/__utility/exception_guard.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/new + third_party/libcxx/__ranges/access.h + third_party/libcxx/__ranges/concepts.h + third_party/libcxx/__ranges/dangling.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__utility/move.h + third_party/libcxx/new + third_party/libcxx/__memory/raw_storage_iterator.h + third_party/libcxx/__config + third_party/libcxx/__iterator/iterator.h + third_party/libcxx/__iterator/iterator_traits.h + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__utility/move.h + third_party/libcxx/cstddef + third_party/libcxx/new + third_party/libcxx/__memory/shared_ptr.h + third_party/libcxx/__availability + third_party/libcxx/__compare/compare_three_way.h + third_party/libcxx/__compare/ordering.h + third_party/libcxx/__config + third_party/libcxx/__functional/binary_function.h + third_party/libcxx/__functional/operations.h + third_party/libcxx/__functional/reference_wrapper.h + third_party/libcxx/__config + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/weak_result_type.h + third_party/libcxx/__config + third_party/libcxx/__functional/binary_function.h + third_party/libcxx/__functional/invoke.h + third_party/libcxx/__functional/unary_function.h + third_party/libcxx/__type_traits/integral_constant.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/remove_cvref.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__iterator/access.h + third_party/libcxx/__memory/addressof.h + third_party/libcxx/__memory/allocation_guard.h + third_party/libcxx/__memory/allocator.h + third_party/libcxx/__memory/allocator_destructor.h + third_party/libcxx/__config + third_party/libcxx/__memory/allocator_traits.h + third_party/libcxx/__memory/allocator_traits.h + third_party/libcxx/__memory/auto_ptr.h + third_party/libcxx/__memory/compressed_pair.h + third_party/libcxx/__memory/construct_at.h + third_party/libcxx/__memory/pointer_traits.h + third_party/libcxx/__memory/uninitialized_algorithms.h + third_party/libcxx/__memory/unique_ptr.h + third_party/libcxx/__type_traits/add_lvalue_reference.h + third_party/libcxx/__type_traits/conditional.h + third_party/libcxx/__type_traits/conjunction.h + third_party/libcxx/__type_traits/disjunction.h + third_party/libcxx/__type_traits/is_array.h + third_party/libcxx/__type_traits/is_bounded_array.h + third_party/libcxx/__type_traits/is_convertible.h + third_party/libcxx/__type_traits/is_move_constructible.h + third_party/libcxx/__type_traits/is_reference.h + third_party/libcxx/__type_traits/is_unbounded_array.h + third_party/libcxx/__type_traits/nat.h + third_party/libcxx/__type_traits/negation.h + third_party/libcxx/__type_traits/remove_extent.h + third_party/libcxx/__type_traits/remove_reference.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/forward.h + third_party/libcxx/__utility/move.h + third_party/libcxx/__utility/swap.h + third_party/libcxx/__verbose_abort + third_party/libcxx/cstddef + third_party/libcxx/iosfwd + third_party/libcxx/new + third_party/libcxx/stdexcept + third_party/libcxx/typeinfo + third_party/libcxx/__atomic/memory_order.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/__config + third_party/libcxx/__memory/construct_at.h + third_party/libcxx/__memory/uses_allocator.h + third_party/libcxx/__type_traits/enable_if.h + third_party/libcxx/__type_traits/is_same.h + third_party/libcxx/__type_traits/remove_cv.h + third_party/libcxx/__utility/declval.h + third_party/libcxx/__utility/pair.h + third_party/libcxx/tuple + third_party/libcxx/version + third_party/libcxx/compare + third_party/libcxx/atomic + third_party/libcxx/concepts + third_party/libcxx/cstddef + third_party/libcxx/cstdint + third_party/libcxx/cstdlib + third_party/libcxx/cstring + third_party/libcxx/iosfwd + third_party/libcxx/iterator + third_party/libcxx/new + third_party/libcxx/stdexcept + third_party/libcxx/tuple + third_party/libcxx/type_traits + third_party/libcxx/typeinfo + third_party/libcxx/utility + third_party/libcxx/stdexcept + third_party/libcxx/type_traits + third_party/libcxx/utility + third_party/libcxx/concepts + third_party/libcxx/cstdlib + third_party/libcxx/iterator + third_party/libcxx/type_traits + third_party/libcxx/version + third_party/libcxx/cwchar + third_party/libcxx/__iterator/access.h + third_party/libcxx/__iterator/data.h + third_party/libcxx/__iterator/empty.h + third_party/libcxx/__iterator/reverse_access.h + third_party/libcxx/__iterator/size.h + third_party/libcxx/compare + third_party/libcxx/initializer_list + third_party/libcxx/__undef_macros + third_party/libcxx/algorithm + third_party/libcxx/concepts + third_party/libcxx/cstdlib + third_party/libcxx/iterator + third_party/libcxx/new + third_party/libcxx/type_traits + third_party/libcxx/typeinfo + third_party/libcxx/utility +``` diff --git a/ctl/new.cc b/ctl/new.cc new file mode 100644 index 000000000..7cac144ec --- /dev/null +++ b/ctl/new.cc @@ -0,0 +1,116 @@ +// -*- mode:c++; indent-tabs-mode:nil; c-basic-offset:4; coding:utf-8 -*- +// vi: set et ft=cpp ts=4 sts=4 sw=4 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 "new.h" + +#include "libc/mem/mem.h" + +using ctl::align_val_t; + +namespace { + +constexpr auto a1 = align_val_t(1); + +} // namespace + +void* +operator new(size_t n, align_val_t a) +{ + void* p; + if (!(p = memalign(static_cast(a), n))) { + __builtin_trap(); + } + return p; +} + +void* +operator new[](size_t n, align_val_t a) +{ + return operator new(n, a); +} +void* +operator new(size_t n) +{ + return operator new(n, a1); +} +void* +operator new[](size_t n) +{ + return operator new(n, a1); +} + +void* +operator new(size_t, void* p) +{ + return p; +} +void* +operator new[](size_t, void* p) +{ + return p; +} + +void +operator delete(void* p) noexcept +{ + free(p); +} +void +operator delete[](void* p) noexcept +{ + free(p); +} +void +operator delete(void* p, align_val_t) noexcept +{ + free(p); +} +void +operator delete[](void* p, align_val_t) noexcept +{ + free(p); +} +void +operator delete(void* p, size_t) noexcept +{ + free(p); +} +void +operator delete[](void* p, size_t) noexcept +{ + free(p); +} +void +operator delete(void* p, size_t, align_val_t) noexcept +{ + free(p); +} +void +operator delete[](void* p, size_t, align_val_t) noexcept +{ + free(p); +} + +void +operator delete(void*, void*) noexcept +{ +} +void +operator delete[](void*, void*) noexcept +{ +} diff --git a/ctl/new.h b/ctl/new.h new file mode 100644 index 000000000..15b84488e --- /dev/null +++ b/ctl/new.h @@ -0,0 +1,30 @@ +// -*-mode:c++;indent-tabs-mode:nil;c-basic-offset:4;tab-width:8;coding:utf-8-*- +// vi: set et ft=cpp ts=4 sts=4 sw=4 fenc=utf-8 :vi +#ifndef COSMOPOLITAN_CTL_NEW_H_ +#define COSMOPOLITAN_CTL_NEW_H_ + +// clang-format off + +namespace ctl { + +enum class align_val_t : size_t {}; + +} // namespace ctl + +void* operator new(size_t); +void* operator new[](size_t); +void* operator new(size_t, ctl::align_val_t); +void* operator new[](size_t, ctl::align_val_t); +void* operator new(size_t, void*); +void* operator new[](size_t, void*); + +void operator delete(void*) noexcept; +void operator delete[](void*) noexcept; +void operator delete(void*, ctl::align_val_t) noexcept; +void operator delete[](void*, ctl::align_val_t) noexcept; +void operator delete(void*, size_t) noexcept; +void operator delete[](void*, size_t) noexcept; +void operator delete(void*, size_t, ctl::align_val_t) noexcept; +void operator delete[](void*, size_t, ctl::align_val_t) noexcept; + +#endif // COSMOPOLITAN_CTL_NEW_H_ diff --git a/ctl/optional.h b/ctl/optional.h new file mode 100644 index 000000000..26fa97bad --- /dev/null +++ b/ctl/optional.h @@ -0,0 +1,143 @@ +// -*-mode:c++;indent-tabs-mode:nil;c-basic-offset:4;tab-width:8;coding:utf-8-*- +// vi: set et ft=cpp ts=4 sts=4 sw=4 fenc=utf-8 :vi +#ifndef COSMOPOLITAN_CTL_OPTIONAL_H_ +#define COSMOPOLITAN_CTL_OPTIONAL_H_ +#include "new.h" +#include <__utility/forward.h> +#include <__utility/move.h> +#include <__utility/swap.h> + +namespace ctl { + +template +class optional +{ + public: + using value_type = T; + + ~optional() + { + if (present_) + value_.~T(); + } + + optional() noexcept : present_(false) + { + } + + optional(const T& value) : present_(true) + { + new (&value_) T(value); + } + + optional(T&& value) : present_(true) + { + new (&value_) T(std::move(value)); + } + + optional(const optional& other) : present_(other.present_) + { + if (other.present_) + new (&value_) T(other.value_); + } + + optional(optional&& other) noexcept : present_(other.present_) + { + if (other.present_) + new (&value_) T(std::move(other.value_)); + } + + optional& operator=(const optional& other) + { + if (this != &other) { + reset(); + if (other.present_) + new (&value_) T(other.value_); + present_ = other.present_; + } + return *this; + } + + optional& operator=(optional&& other) noexcept + { + if (this != &other) { + reset(); + if (other.present_) + new (&value_) T(std::move(other.value_)); + present_ = other.present_; + } + return *this; + } + + T& value() & + { + if (!present_) + __builtin_trap(); + return value_; + } + + const T& value() const& + { + if (!present_) + __builtin_trap(); + return value_; + } + + T&& value() && + { + if (!present_) + __builtin_trap(); + return std::move(value_); + } + + explicit operator bool() const noexcept + { + return present_; + } + + bool has_value() const noexcept + { + return present_; + } + + void reset() noexcept + { + if (present_) { + value_.~T(); + present_ = false; + } + } + + template + void emplace(Args&&... args) + { + reset(); + present_ = true; + new (&value_) T(std::forward(args)...); + } + + void swap(optional& other) noexcept + { + using std::swap; + if (present_ && other.present_) { + swap(value_, other.value_); + } else if (present_) { + other.emplace(std::move(value_)); + reset(); + } else if (other.present_) { + emplace(std::move(other.value_)); + other.reset(); + } + } + + private: + union + { + T value_; + }; + bool present_; +}; + +} // namespace ctl + +#endif // COSMOPOLITAN_CTL_OPTIONAL_H_ diff --git a/ctl/strcat.cc b/ctl/strcat.cc new file mode 100644 index 000000000..0e7c49070 --- /dev/null +++ b/ctl/strcat.cc @@ -0,0 +1,49 @@ +// -*- mode:c++; indent-tabs-mode:nil; c-basic-offset:4; coding:utf-8 -*- +// vi: set et ft=cpp ts=4 sts=4 sw=4 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 "string.h" + +#include +#include + +namespace ctl { + +string +strcat(const string_view lhs, const string_view rhs) noexcept +{ + string res; + size_t need; + if (ckd_add(&need, lhs.n, rhs.n)) + __builtin_trap(); + if (ckd_add(&need, need, 1)) + __builtin_trap(); + res.reserve(need); + if (lhs.n) + memcpy(res.data(), lhs.p, lhs.n); + if (rhs.n) + memcpy(res.data() + lhs.n, rhs.p, rhs.n); + if (res.isbig()) { + res.big()->n = lhs.n + rhs.n; + } else { + res.small()->rem = __::sso_max - lhs.n - rhs.n; + } + res.data()[res.size()] = 0; + return res; +} + +} // namespace ctl diff --git a/ctl/strcmp.cc b/ctl/strcmp.cc new file mode 100644 index 000000000..3503c5927 --- /dev/null +++ b/ctl/strcmp.cc @@ -0,0 +1,43 @@ +// -*- mode:c++; indent-tabs-mode:nil; c-basic-offset:4; coding:utf-8 -*- +// vi: set et ft=cpp ts=4 sts=4 sw=4 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 "string_view.h" + +#include + +namespace ctl { + +int +strcmp(const string_view lhs, const string_view rhs) noexcept +{ + int r; + size_t m = lhs.n; + if ((m = rhs.n < m ? rhs.n : m)) { + if (!m) + return 0; + if ((r = memcmp(lhs.p, rhs.p, m))) + return r; + } + if (lhs.n == rhs.n) + return 0; + if (m < lhs.n) + return +1; + return -1; +} + +} // namespace ctl diff --git a/ctl/string.cc b/ctl/string.cc new file mode 100644 index 000000000..f5184786f --- /dev/null +++ b/ctl/string.cc @@ -0,0 +1,367 @@ +// -*- mode:c++; indent-tabs-mode:nil; c-basic-offset:4; coding:utf-8 -*- +// vi: set et ft=cpp ts=4 sts=4 sw=4 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 "string.h" + +#include <__atomic/fence.h> +#include + +namespace ctl { + +string::~string() noexcept +{ + if (isbig()) { + auto* b = big(); + if (b->n) { + if (b->n >= b->c) + __builtin_trap(); + if (b->p[b->n]) + __builtin_trap(); + } + if (b->c && !b->p) + __builtin_trap(); + free(b->p); + } +} + +string::string(const char* s) noexcept : string() +{ + append(s, strlen(s)); +} + +string::string(const string& s) noexcept : string() +{ + append(s.data(), s.size()); +} + +string::string(const string_view s) noexcept : string() +{ + append(s.p, s.n); +} + +string::string(size_t size, char ch) noexcept : string() +{ + resize(size, ch); +} + +string::string(const char* s, size_t size) noexcept : string() +{ + append(s, size); +} + +const char* +string::c_str() const noexcept +{ + if (!size()) + return ""; + if (size() >= capacity()) + __builtin_trap(); + if (data()[size()]) + __builtin_trap(); + return data(); +} + +void +string::reserve(size_t c2) noexcept +{ + char* p2; + size_t n = size(); + if (c2 < n + 1) + c2 = n + 1; + if (c2 <= __::string_size) + return; + if (ckd_add(&c2, c2, 15)) + __builtin_trap(); + c2 &= -16; + if (!isbig()) { + if (!(p2 = (char*)malloc(c2))) + __builtin_trap(); + memcpy(p2, data(), size()); + p2[size()] = 0; + } else { + if (!(p2 = (char*)realloc(big()->p, c2))) + __builtin_trap(); + } + std::atomic_signal_fence(std::memory_order_seq_cst); + set_big_capacity(c2); + big()->n = n; + big()->p = p2; +} + +void +string::resize(size_t n2, char ch) noexcept +{ + size_t c2; + if (ckd_add(&c2, n2, 1)) + __builtin_trap(); + reserve(c2); + if (n2 > size()) + memset(data() + size(), ch, n2 - size()); + if (isbig()) { + big()->p[big()->n = n2] = 0; + } else { + set_small_size(n2); + data()[size()] = 0; + } +} + +void +string::append(char ch) noexcept +{ + size_t n2; + if (ckd_add(&n2, size(), 2)) + __builtin_trap(); + if (n2 > capacity()) { + size_t c2 = capacity(); + if (ckd_add(&c2, c2, c2 >> 1)) + __builtin_trap(); + reserve(c2); + } + data()[size()] = ch; + if (isbig()) { + ++big()->n; + } else { + --small()->rem; + } + data()[size()] = 0; +} + +void +string::grow(size_t size) noexcept +{ + size_t need; + if (ckd_add(&need, this->size(), size)) + __builtin_trap(); + if (ckd_add(&need, need, 1)) + __builtin_trap(); + if (need <= capacity()) + return; + size_t c2 = capacity(); + if (!c2) + __builtin_trap(); + while (c2 < need) + if (ckd_add(&c2, c2, c2 >> 1)) + __builtin_trap(); + reserve(c2); +} + +void +string::append(char ch, size_t size) noexcept +{ + grow(size); + if (size) + memset(data() + this->size(), ch, size); + if (isbig()) { + big()->n += size; + } else { + small()->rem -= size; + } + data()[this->size()] = 0; +} + +void +string::append(const void* data, size_t size) noexcept +{ + grow(size); + if (size) + memcpy(this->data() + this->size(), data, size); + if (isbig()) { + big()->n += size; + } else { + small()->rem -= size; + } + this->data()[this->size()] = 0; +} + +void +string::pop_back() noexcept +{ + if (!size()) + __builtin_trap(); + if (isbig()) { + --big()->n; + } else { + ++small()->rem; + } + data()[size()] = 0; +} + +string& +string::operator=(string s) noexcept +{ + swap(s); + return *this; +} + +bool +string::operator==(const string_view s) const noexcept +{ + if (size() != s.n) + return false; + if (!s.n) + return true; + return !memcmp(data(), s.p, s.n); +} + +bool +string::operator!=(const string_view s) const noexcept +{ + if (size() != s.n) + return true; + if (!s.n) + return false; + return !!memcmp(data(), s.p, s.n); +} + +bool +string::contains(const string_view s) const noexcept +{ + if (!s.n) + return true; + return !!memmem(data(), size(), s.p, s.n); +} + +bool +string::ends_with(const string_view s) const noexcept +{ + if (size() < s.n) + return false; + if (!s.n) + return true; + return !memcmp(data() + size() - s.n, s.p, s.n); +} + +bool +string::starts_with(const string_view s) const noexcept +{ + if (size() < s.n) + return false; + if (!s.n) + return true; + return !memcmp(data(), s.p, s.n); +} + +size_t +string::find(char ch, size_t pos) const noexcept +{ + char* q; + if ((q = (char*)memchr(data(), ch, size()))) + return q - data(); + return npos; +} + +size_t +string::find(const string_view s, size_t pos) const noexcept +{ + char* q; + if (pos > size()) + __builtin_trap(); + if ((q = (char*)memmem(data() + pos, size() - pos, s.p, s.n))) + return q - data(); + return npos; +} + +string +string::substr(size_t pos, size_t count) const noexcept +{ + size_t last; + if (pos > size()) + __builtin_trap(); + if (count > size() - pos) + count = size() - pos; + if (ckd_add(&last, pos, count)) + last = size(); + if (last > size()) + __builtin_trap(); + return string(data() + pos, count); +} + +string& +string::replace(size_t pos, size_t count, const string_view& s) noexcept +{ + size_t last; + if (ckd_add(&last, pos, count)) + __builtin_trap(); + if (last > size()) + __builtin_trap(); + size_t need; + if (ckd_add(&need, pos, s.n)) + __builtin_trap(); + size_t extra = size() - last; + if (ckd_add(&need, need, extra)) + __builtin_trap(); + size_t c2; + if (ckd_add(&c2, need, 1)) + __builtin_trap(); + reserve(c2); + if (extra) + memmove(data() + pos + s.n, data() + last, extra); + memcpy(data() + pos, s.p, s.n); + if (isbig()) { + big()->p[big()->n = need] = 0; + } else { + set_small_size(need); + data()[size()] = 0; + } + return *this; +} + +string& +string::insert(size_t i, const string_view s) noexcept +{ + if (i > size()) + __builtin_trap(); + size_t extra = size() - i; + size_t need; + if (ckd_add(&need, size(), s.n)) + __builtin_trap(); + if (ckd_add(&need, need, 1)) + __builtin_trap(); + reserve(need); + if (extra) + memmove(data() + i + s.n, data() + i, extra); + memcpy(data() + i, s.p, s.n); + if (isbig()) { + big()->n += s.n; + } else { + small()->rem -= s.n; + } + data()[size()] = 0; + return *this; +} + +string& +string::erase(size_t pos, size_t count) noexcept +{ + if (pos > size()) + __builtin_trap(); + if (count > size() - pos) + count = size() - pos; + size_t extra = size() - (pos + count); + if (extra) + memmove(data() + pos, data() + pos + count, extra); + if (isbig()) { + big()->n = pos + extra; + } else { + set_small_size(pos + extra); + } + data()[size()] = 0; + return *this; +} + +} // namespace ctl diff --git a/ctl/string.h b/ctl/string.h new file mode 100644 index 000000000..5315a0a45 --- /dev/null +++ b/ctl/string.h @@ -0,0 +1,362 @@ +// -*-mode:c++;indent-tabs-mode:nil;c-basic-offset:4;tab-width:8;coding:utf-8-*- +// vi: set et ft=cpp ts=4 sts=4 sw=4 fenc=utf-8 :vi +#ifndef COSMOPOLITAN_CTL_STRING_H_ +#define COSMOPOLITAN_CTL_STRING_H_ +#include "string_view.h" + +namespace ctl { + +class string; + +string +strcat(const string_view, const string_view) noexcept __wur; + +namespace __ { + +constexpr size_t string_size = 3 * sizeof(size_t); +constexpr size_t sso_max = string_size - 1; +constexpr size_t big_mask = ~(1ull << (8ull * sizeof(size_t) - 1ull)); + +struct small_string +{ + char buf[sso_max]; + // interpretation is: size == sso_max - rem + unsigned char rem; +#if 0 + size_t rem : 7; + size_t big : 1 /* = 0 */; +#endif +}; + +struct big_string +{ + char* p; + size_t n; + // interpretation is: capacity == c & big_mask + size_t c; +#if 0 + size_t c : sizeof(size_t) * 8 - 1; + size_t big : 1 /* = 1 */; +#endif +}; + +} // namespace __ + +class string +{ + public: + using iterator = char*; + using const_iterator = const char*; + static constexpr size_t npos = -1; + + ~string() /* noexcept */; + string(const string_view) noexcept; + string(const char*) noexcept; + string(const string&) noexcept; + string(const char*, size_t) noexcept; + explicit string(size_t, char = 0) noexcept; + + string& operator=(string) noexcept; + const char* c_str() const noexcept; + + void pop_back() noexcept; + void grow(size_t) noexcept; + void reserve(size_t) noexcept; + void resize(size_t, char = 0) noexcept; + void append(char) noexcept; + void append(char, size_t) noexcept; + void append(unsigned long) noexcept; + void append(const void*, size_t) noexcept; + string& insert(size_t, const string_view) noexcept; + string& erase(size_t = 0, size_t = npos) noexcept; + string substr(size_t = 0, size_t = npos) const noexcept; + string& replace(size_t, size_t, const string_view&) noexcept; + bool operator==(const string_view) const noexcept; + bool operator!=(const string_view) const noexcept; + bool contains(const string_view) const noexcept; + bool ends_with(const string_view) const noexcept; + bool starts_with(const string_view) const noexcept; + size_t find(char, size_t = 0) const noexcept; + size_t find(const string_view, size_t = 0) const noexcept; + + string() noexcept + { + set_small_size(0); +#if 0 + small()->buf[0] = 0; +#endif + } + + void swap(string& s) noexcept + { + char tmp[__::string_size]; + __builtin_memcpy(tmp, __builtin_launder(blob), sizeof(tmp)); + __builtin_memcpy( + __builtin_launder(blob), __builtin_launder(s.blob), sizeof(tmp)); + __builtin_memcpy(__builtin_launder(s.blob), tmp, sizeof(tmp)); + } + + string(string&& s) noexcept + { + __builtin_memcpy(blob, __builtin_launder(s.blob), sizeof(blob)); + s.set_small_size(0); +#if 0 + s.small()->buf[0] = 0; +#endif + } + + void clear() noexcept + { + if (isbig()) { + big()->n = 0; + } else { + set_small_size(0); + } + } + + bool empty() const noexcept + { + return isbig() ? !big()->n : small()->rem >= __::sso_max; + } + + inline char* data() noexcept + { + return isbig() ? big()->p : small()->buf; + } + + inline const char* data() const noexcept + { + return isbig() ? big()->p : small()->buf; + } + + inline size_t size() const noexcept + { +#if 0 + if (!isbig() && small()->rem > __::sso_max) + __builtin_trap(); +#endif + return isbig() ? big()->n : __::sso_max - small()->rem; + } + + size_t length() const noexcept + { + return size(); + } + + size_t capacity() const noexcept + { +#if 0 + if (isbig() && big()->c <= __::sso_max) + __builtin_trap(); +#endif + return isbig() ? __::big_mask & big()->c : __::string_size; + } + + iterator begin() noexcept + { + return data(); + } + + iterator end() noexcept + { + return data() + size(); + } + + const_iterator cbegin() const noexcept + { + return data(); + } + + const_iterator cend() const noexcept + { + return data() + size(); + } + + char& front() + { + if (!size()) + __builtin_trap(); + return data()[0]; + } + + const char& front() const + { + if (!size()) + __builtin_trap(); + return data()[0]; + } + + char& back() + { + if (!size()) + __builtin_trap(); + return data()[size() - 1]; + } + + const char& back() const + { + if (!size()) + __builtin_trap(); + return data()[size() - 1]; + } + + char& operator[](size_t i) noexcept + { + if (i >= size()) + __builtin_trap(); + return data()[i]; + } + + const char& operator[](size_t i) const noexcept + { + if (i >= size()) + __builtin_trap(); + return data()[i]; + } + + void push_back(char ch) noexcept + { + append(ch); + } + + void append(const string_view s) noexcept + { + append(s.p, s.n); + } + + inline operator string_view() const noexcept + { + return string_view(data(), size()); + } + + string& operator=(const char* s) noexcept + { + clear(); + append(s); + return *this; + } + + string& operator=(const string_view s) noexcept + { + clear(); + append(s); + return *this; + } + + string& operator+=(char x) noexcept + { + append(x); + return *this; + } + + string& operator+=(const string_view s) noexcept + { + append(s); + return *this; + } + + string operator+(const string_view s) const noexcept + { + return strcat(*this, s); + } + + int compare(const string_view s) const noexcept + { + return strcmp(*this, s); + } + + bool operator<(const string_view s) const noexcept + { + return compare(s) < 0; + } + + bool operator<=(const string_view s) const noexcept + { + return compare(s) <= 0; + } + + bool operator>(const string_view s) const noexcept + { + return compare(s) > 0; + } + + bool operator>=(const string_view s) const noexcept + { + return compare(s) >= 0; + } + + private: + inline bool isbig() const noexcept + { + return *(__builtin_launder(blob) + __::sso_max) & 0x80; + } + + inline void set_small_size(size_t size) noexcept + { + if (size > __::sso_max) + __builtin_trap(); + *(__builtin_launder(blob) + __::sso_max) = (__::sso_max - size); + } + + inline void set_big_capacity(size_t c2) noexcept + { + if (c2 > __::big_mask) + __builtin_trap(); + *(__builtin_launder(blob) + __::sso_max) = 0x80; + big()->c &= ~__::big_mask; + big()->c |= c2; + } + + inline __::small_string* small() noexcept + { + if (isbig()) + __builtin_trap(); + return __builtin_launder(reinterpret_cast<__::small_string*>(blob)); + } + + inline const __::small_string* small() const noexcept + { + if (isbig()) + __builtin_trap(); + return __builtin_launder( + reinterpret_cast(blob)); + } + + inline __::big_string* big() noexcept + { + if (!isbig()) + __builtin_trap(); + return __builtin_launder(reinterpret_cast<__::big_string*>(blob)); + } + + inline const __::big_string* big() const noexcept + { + if (!isbig()) + __builtin_trap(); + return __builtin_launder(reinterpret_cast(blob)); + } + + friend string strcat(const string_view, const string_view); + + alignas(union { + __::big_string a; + __::small_string b; + }) char blob[__::string_size]; +}; + +static_assert(sizeof(string) == __::string_size); +static_assert(sizeof(__::small_string) == __::string_size); +static_assert(sizeof(__::big_string) == __::string_size); + +} // namespace ctl + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wliteral-suffix" +inline ctl::string +operator"" s(const char* s, size_t n) +{ + return ctl::string(s, n); +} +#pragma GCC diagnostic pop + +#endif // COSMOPOLITAN_CTL_STRING_H_ diff --git a/ctl/string_view.cc b/ctl/string_view.cc new file mode 100644 index 000000000..e8fb42b47 --- /dev/null +++ b/ctl/string_view.cc @@ -0,0 +1,111 @@ +// -*- mode:c++; indent-tabs-mode:nil; c-basic-offset:4; coding:utf-8 -*- +// vi: set et ft=cpp ts=4 sts=4 sw=4 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 "string_view.h" + +#include +#include + +#include "string.h" + +namespace ctl { + +size_t +string_view::find(char ch, size_t pos) const noexcept +{ + char* q; + if (n && (q = (char*)memchr(p, ch, n))) + return q - p; + return npos; +} + +size_t +string_view::find(const string_view s, size_t pos) const noexcept +{ + char* q; + if (pos > n) + __builtin_trap(); + if ((q = (char*)memmem(p + pos, n - pos, s.p, s.n))) + return q - p; + return npos; +} + +string_view +string_view::substr(size_t pos, size_t count) const noexcept +{ + size_t last; + if (pos > n) + __builtin_trap(); + if (count > n - pos) + count = n - pos; + if (ckd_add(&last, pos, count)) + last = n; + if (last > n) + __builtin_trap(); + return string_view(p + pos, count); +} + +bool +string_view::operator==(const string_view s) const noexcept +{ + if (n != s.n) + return false; + if (!n) + return true; + return !memcmp(p, s.p, n); +} + +bool +string_view::operator!=(const string_view s) const noexcept +{ + if (n != s.n) + return true; + if (!n) + return false; + return !!memcmp(p, s.p, n); +} + +bool +string_view::contains(const string_view s) const noexcept +{ + if (!s.n) + return true; + return !!memmem(p, n, s.p, s.n); +} + +bool +string_view::ends_with(const string_view s) const noexcept +{ + if (n < s.n) + return false; + if (!s.n) + return true; + return !memcmp(p + n - s.n, s.p, s.n); +} + +bool +string_view::starts_with(const string_view s) const noexcept +{ + if (n < s.n) + return false; + if (!s.n) + return true; + return !memcmp(p, s.p, s.n); +} + +} // namespace ctl diff --git a/ctl/string_view.h b/ctl/string_view.h new file mode 100644 index 000000000..0fe526baf --- /dev/null +++ b/ctl/string_view.h @@ -0,0 +1,159 @@ +// -*-mode:c++;indent-tabs-mode:nil;c-basic-offset:4;tab-width:8;coding:utf-8-*- +// vi: set et ft=cpp ts=4 sts=4 sw=4 fenc=utf-8 :vi +#ifndef COSMOPOLITAN_CTL_STRINGVIEW_H_ +#define COSMOPOLITAN_CTL_STRINGVIEW_H_ + +namespace ctl { + +struct string_view; + +int +strcmp(const string_view, const string_view) noexcept; + +struct string_view +{ + const char* p; + size_t n; + + using iterator = const char*; + using const_iterator = const char*; + static constexpr size_t npos = -1; + + constexpr string_view() noexcept : p(nullptr), n(0) + { + } + + constexpr string_view(const char* s) noexcept + : p(s), n(s ? __builtin_strlen(s) : 0) + { + } + + constexpr string_view(const char* s, size_t n) noexcept : p(s), n(n) + { + } + + inline constexpr ~string_view() noexcept + { + } + + bool operator==(const string_view) const noexcept; + bool operator!=(const string_view) const noexcept; + bool contains(const string_view) const noexcept; + bool ends_with(const string_view) const noexcept; + bool starts_with(const string_view) const noexcept; + string_view substr(size_t = 0, size_t = npos) const noexcept; + size_t find(char, size_t = 0) const noexcept; + size_t find(const string_view, size_t = 0) const noexcept; + + constexpr string_view& operator=(const string_view& s) noexcept + { + p = s.p; + n = s.n; + return *this; + } + + constexpr bool empty() const noexcept + { + return !n; + } + + constexpr const char* data() const noexcept + { + return p; + } + + constexpr size_t size() const noexcept + { + return n; + } + + constexpr size_t length() const noexcept + { + return n; + } + + constexpr const char& operator[](size_t i) const noexcept + { + if (i >= n) + __builtin_trap(); + return p[i]; + } + + constexpr void remove_prefix(size_t count) + { + if (count > n) + __builtin_trap(); + p += count; + n -= count; + } + + constexpr void remove_suffix(size_t count) + { + if (count > n) + __builtin_trap(); + n -= count; + } + + constexpr const char& front() const + { + if (!n) + __builtin_trap(); + return p[0]; + } + + constexpr const char& back() const + { + if (!n) + __builtin_trap(); + return p[n - 1]; + } + + constexpr const_iterator begin() noexcept + { + return p; + } + + constexpr const_iterator end() noexcept + { + return p + n; + } + + constexpr const_iterator cbegin() const noexcept + { + return p; + } + + constexpr const_iterator cend() const noexcept + { + return p + n; + } + + int compare(const string_view s) const noexcept + { + return strcmp(*this, s); + } + + bool operator<(const string_view& s) const noexcept + { + return compare(s) < 0; + } + + bool operator<=(const string_view& s) const noexcept + { + return compare(s) <= 0; + } + + bool operator>(const string_view& s) const noexcept + { + return compare(s) > 0; + } + + bool operator>=(const string_view& s) const noexcept + { + return compare(s) >= 0; + } +}; + +} // namespace ctl + +#endif // COSMOPOLITAN_CTL_STRINGVIEW_H_ diff --git a/ctl/vector.h b/ctl/vector.h new file mode 100644 index 000000000..8c9660909 --- /dev/null +++ b/ctl/vector.h @@ -0,0 +1,247 @@ +// -*-mode:c++;indent-tabs-mode:nil;c-basic-offset:4;tab-width:8;coding:utf-8-*- +// vi: set et ft=cpp ts=4 sts=4 sw=4 fenc=utf-8 :vi +#ifndef COSMOPOLITAN_CTL_OPTIONAL_H_ +#define COSMOPOLITAN_CTL_OPTIONAL_H_ +#include "new.h" +#include <__utility/forward.h> +#include <__utility/move.h> +#include <__utility/swap.h> + +namespace ctl { + +template +struct vector +{ + size_t n = 0; + size_t c = 0; + T* p = nullptr; + + using iterator = T*; + using const_iterator = const T*; + + vector() = default; + + ~vector() + { + delete[] p; + } + + vector(const vector& other) + { + n = other.n; + c = other.c; + p = new T[c]; + for (size_t i = 0; i < n; ++i) + new (&p[i]) T(other.p[i]); + } + + vector(vector&& other) noexcept + { + n = other.n; + c = other.c; + p = other.p; + other.n = 0; + other.c = 0; + other.p = nullptr; + } + + explicit vector(size_t count, const T& value = T()) + { + n = count; + c = count; + p = new T[c]; + for (size_t i = 0; i < n; ++i) + new (&p[i]) T(value); + } + + vector& operator=(const vector& other) + { + if (this != &other) { + T* newData = new T[other.c]; + for (size_t i = 0; i < other.n; ++i) { + newData[i] = other.p[i]; + } + delete[] p; + p = newData; + n = other.n; + c = other.c; + } + return *this; + } + + vector& operator=(vector&& other) noexcept + { + if (this != &other) { + delete[] p; + p = other.p; + n = other.n; + c = other.c; + other.p = nullptr; + other.n = 0; + other.c = 0; + } + return *this; + } + + bool empty() const + { + return !n; + } + + size_t size() const + { + return n; + } + + size_t capacity() const + { + return c; + } + + T& operator[](size_t i) + { + if (i >= n) + __builtin_trap(); + return p[i]; + } + + const T& operator[](size_t i) const + { + if (i >= n) + __builtin_trap(); + return p[i]; + } + + iterator begin() + { + return p; + } + + iterator end() + { + return p + n; + } + + const_iterator cbegin() const + { + return p; + } + + const_iterator cend() const + { + return p + n; + } + + T& front() + { + if (!n) + __builtin_trap(); + return p[0]; + } + + const T& front() const + { + if (!n) + __builtin_trap(); + return p[0]; + } + + T& back() + { + if (!n) + __builtin_trap(); + return p[n - 1]; + } + + const T& back() const + { + if (!n) + __builtin_trap(); + return p[n - 1]; + } + + void clear() + { + for (size_t i = 0; i < n; ++i) + p[i].~T(); + n = 0; + } + + void reserve(size_t c2) + { + if (c2 <= c) + return; + T* newP = new T[c2]; + for (size_t i = 0; i < n; ++i) + newP[i] = std::move(p[i]); + delete[] p; + p = newP; + c = c2; + } + + void push_back(const T& e) + { + if (n == c) { + size_t c2 = c + 1; + c2 += c2 >> 1; + reserve(c2); + } + new (&p[n]) T(e); + ++n; + } + + void push_back(T&& e) + { + if (n == c) { + size_t c2 = c + 1; + c2 += c2 >> 1; + reserve(c2); + } + new (&p[n]) T(std::forward(e)); + ++n; + } + + template + void emplace_back(Args&&... args) + { + if (n == c) { + size_t c2 = c + 1; + c2 += c2 >> 1; + reserve(c2); + } + new (&p[n]) T(std::forward(args)...); + ++n; + } + + void pop_back() + { + if (n > 0) { + --n; + p[n].~T(); + } + } + + void resize(size_t n2) + { + if (n2 > n) { + reserve(n2); + for (size_t i = n; i < n2; ++i) + new (&p[i]) T(); + } else if (n2 < n) { + for (size_t i = n2; i < n; ++i) + p[i].~T(); + } + n = n2; + } + + void swap(vector& other) noexcept + { + std::swap(n, other.n); + std::swap(c, other.c); + std::swap(p, other.p); + } +}; + +} // namespace ctl + +#endif // COSMOPOLITAN_CTL_OPTIONAL_H_ 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/core.h b/dsp/core/core.h index eadf040f9..d054201cb 100644 --- a/dsp/core/core.h +++ b/dsp/core/core.h @@ -9,8 +9,8 @@ int mulaw(int); int unmulaw(int); void *double2byte(long, const void *, double, double) vallocesque; void *byte2double(long, const void *, double, double) vallocesque; -void *dct(float[restrict hasatleast 8][8], unsigned, - float, float, float, float, float); +void *dct(float[restrict hasatleast 8][8], unsigned, float, float, float, float, + float); void *dctjpeg(float[restrict hasatleast 8][8], unsigned); double det3(const double[3][3]) nosideeffect; void *inv3(double[restrict 3][3], const double[restrict 3][3], double); diff --git a/dsp/core/dct.c b/dsp/core/dct.c index cae19d596..68d5c3bdc 100644 --- a/dsp/core/dct.c +++ b/dsp/core/dct.c @@ -65,8 +65,8 @@ * * @cost ~100ns */ -void *dct(float M[restrict hasatleast 8][8], unsigned stride, - float c0, float c1, float c2, float c3, float c4) { +void *dct(float M[restrict hasatleast 8][8], unsigned stride, float c0, + float c1, float c2, float c3, float c4) { unsigned y, x; for (y = 0; y < stride * 8; y += stride) { DCT(M[y][0], M[y][1], M[y][2], M[y][3], M[y][4], M[y][5], M[y][6], M[y][7], diff --git a/dsp/core/gamma.c b/dsp/core/gamma.c index bcbf1273b..ab33737fd 100644 --- a/dsp/core/gamma.c +++ b/dsp/core/gamma.c @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "dsp/core/core.h" #include "dsp/core/gamma.h" +#include "dsp/core/core.h" #include "libc/math.h" double rgb2stdpc(double x, double g) { 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/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/buffer.h b/dsp/mpeg/buffer.h index 5ab5faaa6..e841535fb 100644 --- a/dsp/mpeg/buffer.h +++ b/dsp/mpeg/buffer.h @@ -64,7 +64,8 @@ forceinline bool plm_buffer_has(plm_buffer_t *b, size_t bits) { } forceinline int plm_buffer_read(plm_buffer_t *self, int count) { - if (!plm_buffer_has(self, count)) return 0; + if (!plm_buffer_has(self, count)) + return 0; int value = 0; while (count) { int current_byte = self->bytes[self->bit_index >> 3]; diff --git a/dsp/mpeg/demux.h b/dsp/mpeg/demux.h index 0cc24e2eb..f36de4d3a 100644 --- a/dsp/mpeg/demux.h +++ b/dsp/mpeg/demux.h @@ -3,8 +3,8 @@ #include "dsp/mpeg/mpeg.h" COSMOPOLITAN_C_START_ -#define START_PACK 0xBA -#define START_END 0xB9 +#define START_PACK 0xBA +#define START_END 0xB9 #define START_SYSTEM 0xBB typedef struct plm_demux_t { 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/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/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/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/dsp/tty/altbuf.c b/dsp/tty/altbuf.c index 42dc045eb..9efb96366 100644 --- a/dsp/tty/altbuf.c +++ b/dsp/tty/altbuf.c @@ -24,9 +24,13 @@ * The alternate buffer trick lets one restore the console exactly as it * was, once the program is done running. */ -int ttyenablealtbuf(int ttyfd) { return ttysend(ttyfd, "\e[?1049h"); } +int ttyenablealtbuf(int ttyfd) { + return ttysend(ttyfd, "\e[?1049h"); +} /** * Asks teletypewriter to restore blinking box thing. */ -int ttydisablealtbuf(int ttyfd) { return ttysend(ttyfd, "\e[?1049l"); } +int ttydisablealtbuf(int ttyfd) { + return ttysend(ttyfd, "\e[?1049l"); +} 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/savecursor.c b/dsp/tty/savecursor.c index 75979413f..30e240a41 100644 --- a/dsp/tty/savecursor.c +++ b/dsp/tty/savecursor.c @@ -21,9 +21,13 @@ /** * Asks teletypewriter to push current position. */ -int ttysavecursor(int ttyfd) { return ttysend(ttyfd, "\e[s"); } +int ttysavecursor(int ttyfd) { + return ttysend(ttyfd, "\e[s"); +} /** * Asks teletypewriter to pop previous position. */ -int ttyrestorecursor(int ttyfd) { return ttysend(ttyfd, "\e[u"); } +int ttyrestorecursor(int ttyfd) { + return ttysend(ttyfd, "\e[u"); +} diff --git a/dsp/tty/setbgfg16.c b/dsp/tty/setbgfg16.c index 32834130c..0c0eb90b1 100644 --- a/dsp/tty/setbgfg16.c +++ b/dsp/tty/setbgfg16.c @@ -21,22 +21,30 @@ #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; } -char *setbg16_(char *p, struct TtyRgb bg) { return setansibgfg(p, bg.xt, -1u); } -char *setfg16_(char *p, struct TtyRgb fg) { return setansibgfg(p, -1u, fg.xt); } +char *setbg16_(char *p, struct TtyRgb bg) { + return setansibgfg(p, bg.xt, -1u); +} +char *setfg16_(char *p, struct TtyRgb fg) { + return setansibgfg(p, -1u, fg.xt); +} char *setbgfg16_(char *p, struct TtyRgb bg, struct TtyRgb fg) { return setansibgfg(p, bg.xt, fg.xt); } 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..333c641f0 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); } @@ -84,10 +87,11 @@ static textexit void ttyraw_onexit(void) { ttyraw_disable(); } -static relegated void ttyraw_onsig(int sig, struct siginfo *info, +static relegated void ttyraw_onsig(int sig, siginfo_t *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/BUILD.mk b/examples/BUILD.mk index 46faa0d95..5ebceb991 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,8 +88,10 @@ EXAMPLES_DIRECTDEPS = \ THIRD_PARTY_SED \ THIRD_PARTY_STB \ THIRD_PARTY_TR \ + THIRD_PARTY_TZ \ THIRD_PARTY_VQSORT \ THIRD_PARTY_XED \ + THIRD_PARTY_LIBCXXABI \ THIRD_PARTY_ZLIB \ TOOL_ARGS \ TOOL_BUILD_LIB \ @@ -154,7 +155,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/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/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/examples/crashreport.c b/examples/crashreport.c index 7ea9a5e81..4e41ebf7f 100644 --- a/examples/crashreport.c +++ b/examples/crashreport.c @@ -7,6 +7,7 @@ │ • http://creativecommons.org/publicdomain/zero/1.0/ │ ╚─────────────────────────────────────────────────────────────────*/ #endif +#include "libc/calls/calls.h" #include "libc/intrin/kprintf.h" #include "libc/math.h" #include "libc/runtime/runtime.h" @@ -26,6 +27,13 @@ * o//examples/crashreport.com */ +int Divide(int x, int y) { + volatile int z = 0; // force creation of stack frame + return x / y + z; +} + +int (*pDivide)(int, int) = Divide; + dontubsan int main(int argc, char *argv[]) { kprintf("----------------\n"); kprintf(" THIS IS A TEST \n"); @@ -34,12 +42,7 @@ dontubsan int main(int argc, char *argv[]) { ShowCrashReports(); - volatile double a = 0; - volatile double b = 23; - volatile double c = exp(b) / a; - (void)c; - - volatile int x = 0; - volatile int y = 1 / x; - return y; + pDivide(1, 0); + pDivide(2, 0); + pDivide(3, 0); } 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/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/env.c b/examples/env.c index f3395ab36..5e607ddad 100644 --- a/examples/env.c +++ b/examples/env.c @@ -1,9 +1,9 @@ -#include "libc/stdio/stdio.h" #include "libc/runtime/runtime.h" +#include "libc/stdio/stdio.h" int main(int argc, char* argv[]) { fprintf(stderr, "%s (%s)\n", argv[0], GetProgramExecutableName()); - for (char **p = environ; *p; ++p) { + for (char** p = environ; *p; ++p) { printf("%s\n", *p); } return 0; diff --git a/examples/greenbean.c b/examples/greenbean.c index 166b6e532..7bace793c 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; @@ -149,7 +151,7 @@ void *Worker(void *id) { // check that client message wasn't fragmented into more reads InitHttpMessage(&msg, kHttpRequest); - if ((inmsglen = ParseHttpMessage(&msg, buf, got)) <= 0) { + if ((inmsglen = ParseHttpMessage(&msg, buf, got, sizeof(buf))) <= 0) { if (!inmsglen) { LOG("%6H client sent fragmented message"); } else { @@ -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/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/hiredis.c b/examples/hiredis.c index 749cc61db..727e23ce6 100644 --- a/examples/hiredis.c +++ b/examples/hiredis.c @@ -7,11 +7,11 @@ │ • http://creativecommons.org/publicdomain/zero/1.0/ │ ╚─────────────────────────────────────────────────────────────────*/ #endif -#include "libc/runtime/runtime.h" +#include "third_party/hiredis/hiredis.h" #include "libc/fmt/conv.h" +#include "libc/runtime/runtime.h" #include "libc/stdio/stdio.h" #include "libc/str/str.h" -#include "third_party/hiredis/hiredis.h" /** * @fileoverview Demo of using hiredis to connect to a Redis server diff --git a/examples/kilo.c b/examples/kilo.c index 9645634e1..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 @@ -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/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 0f5db41cd..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" @@ -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/package/BUILD.mk b/examples/package/BUILD.mk index 959b68469..6e387b8d8 100644 --- a/examples/package/BUILD.mk +++ b/examples/package/BUILD.mk @@ -42,6 +42,7 @@ EXAMPLES_PACKAGE_OBJS = \ EXAMPLES_PACKAGE_DIRECTDEPS = \ EXAMPLES_PACKAGE_LIB \ LIBC_INTRIN \ + LIBC_MEM \ LIBC_STDIO \ LIBC_TINYMATH diff --git a/examples/package/lib/BUILD.mk b/examples/package/lib/BUILD.mk index 3fdbe344d..5b53f06dc 100644 --- a/examples/package/lib/BUILD.mk +++ b/examples/package/lib/BUILD.mk @@ -71,6 +71,7 @@ EXAMPLES_PACKAGE_LIB_A_CHECKS = \ EXAMPLES_PACKAGE_LIB_A_DIRECTDEPS = \ LIBC_INTRIN \ LIBC_NEXGEN32E \ + LIBC_MEM \ LIBC_STDIO # Evaluates variable as set of transitive package dependencies. diff --git a/examples/parsefloat.c b/examples/parsefloat.c index ea0fb87d1..c9f049aef 100644 --- a/examples/parsefloat.c +++ b/examples/parsefloat.c @@ -1,31 +1,31 @@ #include -#define PARSE_AND_PRINT(type, scan_fmt, print_fmt, str) \ - do { \ - type val; int ret; \ - ret = sscanf(str, scan_fmt, &val); \ - printf("\"%s\" => " print_fmt " = %d\n", str, val, ret); \ +#define PARSE_AND_PRINT(type, scan_fmt, print_fmt, str) \ + do { \ + type val; \ + int ret; \ + ret = sscanf(str, scan_fmt, &val); \ + printf("\"%s\" => " print_fmt " = %d\n", str, val, ret); \ } while (0) -int main() -{ - PARSE_AND_PRINT(float, "%f", "%f", "0.3715"); - PARSE_AND_PRINT(float, "%f", "%f", ".3715"); - PARSE_AND_PRINT(float, "%f", "%f", "3715"); - PARSE_AND_PRINT(float, "%f", "%f", "111.11"); - PARSE_AND_PRINT(float, "%f", "%f", "-2.22"); - PARSE_AND_PRINT(float, "%f", "%f", "Nan"); - PARSE_AND_PRINT(float, "%f", "%f", "nAn(2)"); - PARSE_AND_PRINT(float, "%f", "%f", "-NAN(_asdfZXCV1234_)"); - PARSE_AND_PRINT(float, "%f", "%f", "-nan"); - PARSE_AND_PRINT(float, "%f", "%f", "+nan"); - PARSE_AND_PRINT(float, "%f", "%f", "inF"); - PARSE_AND_PRINT(float, "%f", "%f", "iNfINiTy"); - PARSE_AND_PRINT(float, "%f", "%f", "+inf"); - PARSE_AND_PRINT(float, "%f", "%f", "-inf"); - PARSE_AND_PRINT(float, "%f", "%f", "0X1.BC70A3D70A3D7P+6"); - PARSE_AND_PRINT(float, "%f", "%f", "1.18973e+4932zzz"); - PARSE_AND_PRINT(float, "%f", "%.10f", " -0.0000000123junk"); - PARSE_AND_PRINT(float, "%f", "%f", "junk"); - return 0; +int main() { + PARSE_AND_PRINT(float, "%f", "%f", "0.3715"); + PARSE_AND_PRINT(float, "%f", "%f", ".3715"); + PARSE_AND_PRINT(float, "%f", "%f", "3715"); + PARSE_AND_PRINT(float, "%f", "%f", "111.11"); + PARSE_AND_PRINT(float, "%f", "%f", "-2.22"); + PARSE_AND_PRINT(float, "%f", "%f", "Nan"); + PARSE_AND_PRINT(float, "%f", "%f", "nAn(2)"); + PARSE_AND_PRINT(float, "%f", "%f", "-NAN(_asdfZXCV1234_)"); + PARSE_AND_PRINT(float, "%f", "%f", "-nan"); + PARSE_AND_PRINT(float, "%f", "%f", "+nan"); + PARSE_AND_PRINT(float, "%f", "%f", "inF"); + PARSE_AND_PRINT(float, "%f", "%f", "iNfINiTy"); + PARSE_AND_PRINT(float, "%f", "%f", "+inf"); + PARSE_AND_PRINT(float, "%f", "%f", "-inf"); + PARSE_AND_PRINT(float, "%f", "%f", "0X1.BC70A3D70A3D7P+6"); + PARSE_AND_PRINT(float, "%f", "%f", "1.18973e+4932zzz"); + PARSE_AND_PRINT(float, "%f", "%.10f", " -0.0000000123junk"); + PARSE_AND_PRINT(float, "%f", "%f", "junk"); + return 0; } 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/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/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/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/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/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..ebaf1fcbb 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); } @@ -2569,7 +2601,8 @@ static int shlex() { case 'y': case 'z': p = buf; - while (buf++, is_in_name(*buf)); + while (buf++, is_in_name(*buf)) + ; yylval.name = stalloc(buf - p + 1); *(char *)mempcpy(yylval.name, p, buf - p) = 0; value = ARITH_VAR; @@ -2579,7 +2612,8 @@ static int shlex() { checkeq: buf++; checkeqcur: - if (*buf != '=') goto out; + if (*buf != '=') + goto out; value += 11; break; case '>': @@ -2681,12 +2715,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 +2752,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 +2792,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 +2848,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 +2857,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 +2869,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 +2881,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 +2896,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 +2915,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 +2962,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 +2975,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 +3001,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 +3017,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 +3042,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 +3069,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 +3082,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 +3094,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 +3105,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 +3121,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 +3158,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 +3194,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 +3209,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 +3246,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 +3256,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 +3275,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 +3304,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 +3326,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 +3365,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 +3386,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 +3399,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 +3428,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 +3458,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 +3469,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 +3478,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 +3527,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 +3558,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 +3587,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 +3616,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 +3628,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 +3682,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 +3709,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 +3729,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 +3744,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 +3754,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 +3809,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 +3841,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 +3852,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 +3868,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 +3961,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 +4040,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 +4078,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 +4104,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 +4166,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 +4231,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 +4248,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 +4263,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 +4282,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 +4294,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 +4330,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 +4391,8 @@ static void changepath(const char *newval) { break; } neu = strchr(neu, ':'); - if (!neu) break; + if (!neu) + break; idx++; neu++; } @@ -4318,11 +4441,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 +4468,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 +4717,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 +4750,8 @@ start: } p += length + 1; length = 0; - if (end) break; + if (end) + break; switch (c) { case '=': flag |= EXP_VARTILDE2; @@ -4684,7 +4812,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 +4821,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 +4830,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 +4840,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 +4871,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 +4889,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 +4919,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 +4928,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 +4984,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 +5009,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 +5037,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 +5104,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 +5119,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 +5147,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 +5166,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 +5207,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 +5226,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 +5242,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 +5266,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 +5287,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 +5361,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 +5388,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 +5429,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 +5455,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 +5467,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 +5481,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 +5512,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 +5573,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 +5602,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 +5626,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 +5636,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 +5696,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 +5720,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 +5751,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 +5771,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 +5845,8 @@ static char *rmescapes(char *str, int flag) { } if (*p == (char)CTLESC) { p++; - if (notescaped) *q++ = '\\'; + if (notescaped) + *q++ = '\\'; } notescaped = globbing; copy: @@ -5672,11 +5876,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 +5890,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 +5907,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 +5974,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 +5994,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 +6047,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 +6108,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 +6193,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 +6213,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 +6251,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 +6267,8 @@ static void popfile(void) { } static void unwindfiles(struct parsefile *stop) { - while (parsefile != stop) popfile(); + while (parsefile != stop) + popfile(); } /* @@ -6083,7 +6304,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 +6321,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 +6346,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 +6367,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 +6399,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 +6423,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 +6440,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 +6456,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 +6513,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 +6539,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 +6576,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 +6621,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 +6640,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 +6653,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 +6679,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 +6695,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 +6731,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 +6757,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 +6770,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 +6801,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 +6845,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 +6901,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 +6918,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 +6953,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 +7014,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 +7027,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 +7048,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 +7065,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 +7109,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 +7142,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 +7166,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 +7196,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 +7205,8 @@ static void cmdtxt(union node *n) { for (;;) { cmdtxt(lp->n); lp = lp->next; - if (!lp) break; + if (!lp) + break; cmdputs(" | "); } break; @@ -7054,9 +7341,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 +7393,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 +7417,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 +7435,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 +7446,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 +7460,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 +7531,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 +7541,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 +7609,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 +7623,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 +7634,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 +7649,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 +7676,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 +7723,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 { @@ -7449,20 +7758,24 @@ static int ulimitcmd(int argc, char **argv) { what = optc; } } - for (l = limits; l->option != what; l++); + for (l = limits; l->option != what; l++) + ; 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 +7789,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 +7819,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 +7843,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 +7918,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 +7927,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 +7948,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); } @@ -7662,7 +7988,8 @@ static void setparam(char **argv) { char **newparam; char **ap; int nparam; - for (nparam = 0; argv[nparam]; nparam++); + for (nparam = 0; argv[nparam]; nparam++) + ; ap = newparam = ckmalloc((nparam + 1) * sizeof *ap); while (*argv) { *ap++ = savestr(*argv++); @@ -7682,7 +8009,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 +8022,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 +8045,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 +8130,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 +8147,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 +8180,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 +8207,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 +8225,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 +8244,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 +8253,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 +8290,8 @@ static union node *list(int nlflag) { case TSEMI: break; default: - if (!chknl) synexpect(-1); + if (!chknl) + synexpect(-1); tokpushback++; return n1; } @@ -8036,7 +8379,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 +8388,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 +8435,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 +8448,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 +8461,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 +8486,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 +8523,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 +8591,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 +8635,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 +8651,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; @@ -8308,7 +8667,8 @@ static void parsefname(void) { if (heredoclist == NULL) heredoclist = here; else { - for (p = heredoclist; p->next; p = p->next); + for (p = heredoclist; p->next; p = p->next) + ; p->next = here; } } else if (n->type == NTOFD || n->type == NFROMFD) { @@ -8391,7 +8751,8 @@ out: static void nlprompt(void) { plinno++; - if (doprompt) setprompt(2); + if (doprompt) + setprompt(2); } static void nlnoprompt(void) { @@ -8431,7 +8792,8 @@ static int xxreadtoken(void) { case '\t': continue; case '#': - while ((c = pgetc()) != '\n' && c != PEOF); + while ((c = pgetc()) != '\n' && c != PEOF) + ; pungetc(); continue; case '\n': @@ -8440,15 +8802,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,11 +8912,12 @@ 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); -loop: { /* for each line, until end of word */ +loop : { /* for each line, until end of word */ CHECKEND(); /* set c to PEOF if at end of here document */ for (;;) { /* until end of line or end of word */ CHECKSTRSPACE(4, out); /* permit 4 calls to USTPUTC */ @@ -8601,7 +8967,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 +8980,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 +9029,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) { @@ -8699,16 +9069,18 @@ endword: * is called, c is set to the first character of the next input line. If * we are at the end of the here document, this routine sets the c to PEOF. */ -checkend: { +checkend : { if (realeofmark(eofmark)) { 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) { @@ -8740,7 +9112,7 @@ checkend: { * specifying the fd to be redirected. The variable "c" contains the * first character of the redirection operator. */ -parseredir: { +parseredir : { char fd = *out; union node *np; np = (union node *)stalloc(sizeof(struct nfile)); @@ -8787,7 +9159,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; } @@ -8796,7 +9169,7 @@ parseredir: { * Parse a substitution. At this point, we have read the dollar sign * and nothing else. */ -parsesub: { +parsesub : { int subtype; int typeloc; char *p; @@ -8839,7 +9212,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 +9224,8 @@ parsesub: { } } if (!is_special(cc)) { - if (subtype == VSLENGTH) subtype = 0; + if (subtype == VSLENGTH) + subtype = 0; goto badsub; } USTPUTC(cc, out); @@ -8865,7 +9240,8 @@ parsesub: { /*FALLTHROUGH*/ default: p = strchr(types, c); - if (p == NULL) break; + if (p == NULL) + break; subtype |= p - types + VSNORMAL; break; case '%': @@ -8880,11 +9256,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 +9273,8 @@ parsesub: { *((char *)stackblock() + typeloc) = subtype; if (subtype != VSNORMAL) { synstack->varnest++; - if (synstack->dblquote) synstack->dqvarnest++; + if (synstack->dblquote) + synstack->dqvarnest++; } STPUTC('=', out); } @@ -8908,7 +9287,7 @@ parsesub: { * list of commands (passed by reference), and savelen is the number of * characters on the top of the stack which must be preserved. */ -parsebackq: { +parsebackq : { struct nodelist **nlpp; union node *n; char *str; @@ -8962,7 +9341,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 +9355,8 @@ parsebackq: { if (oldstyle) doprompt = saveprompt; else { - if (readtoken() != TRP) synexpect(TRP); + if (readtoken() != TRP) + synexpect(TRP); setinputstring(nullstr); } parseheredoc(); @@ -8984,7 +9365,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); @@ -9000,7 +9382,7 @@ parsebackq: { /* * Parse an arithmetic expansion (indicate start of one and set state) */ -parsearith: { +parsearith : { synstack_push(&synstack, synstack->prev ?: alloca(sizeof(*synstack)), ARISYNTAX); synstack->dblquote = 1; @@ -9040,7 +9422,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 +9434,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 +9490,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 +9516,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 +9544,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 +9571,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 +9590,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 +9622,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 +9638,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 +9674,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 +9725,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 +9741,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 +9783,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 +9820,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 +9855,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 +9867,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 +9881,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 +9914,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 +9925,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 +9947,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 +9963,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 +9978,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 +9987,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 +10048,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 +10073,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 +10126,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 +10136,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 +10200,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 +10213,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 +10302,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 +10319,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 +10353,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 +10393,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 +10404,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 +10459,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 +10469,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 +10534,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 +10569,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 +10625,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 +10657,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 +10699,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 +10738,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 +10795,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 +10827,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 +10867,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 +10902,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 +10943,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 +10984,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 +11019,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 +11038,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 +11051,8 @@ out: } static void unwindlocalvars(struct localvar_list *stop) { - while (localvar_stack != stop) poplocalvars(); + while (localvar_stack != stop) + poplocalvars(); } /* @@ -10604,7 +11072,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 +11176,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 +11202,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 +11308,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 +11428,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 +11438,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 +11454,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 +11472,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 +11488,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 +11518,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 +11544,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 +11584,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..56f4ec049 100644 --- a/examples/walk.c +++ b/examples/walk.c @@ -9,11 +9,11 @@ #endif #include "libc/errno.h" #include "libc/runtime/runtime.h" +#include "libc/stdio/ftw.h" #include "libc/stdio/stdio.h" #include "libc/str/str.h" #include "libc/sysv/consts/exit.h" #include "libc/sysv/consts/s.h" -#include "libc/stdio/ftw.h" /** * @fileoverview Directory walker example. @@ -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..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" @@ -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/BUILD.mk b/libc/BUILD.mk index caff0ca1a..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,38 +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)) @@ -299,7 +211,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/BUILD.mk b/libc/calls/BUILD.mk index a12d7f3e6..b2b633a7a 100644 --- a/libc/calls/BUILD.mk +++ b/libc/calls/BUILD.mk @@ -147,6 +147,13 @@ o/$(MODE)/libc/calls/pledge-linux.o: private \ -fPIC \ -ffreestanding +# we want -Os because: +# it makes a big difference +# it gets called very rarely +o/$(MODE)/libc/calls/sigcrashsig.o: private \ + CFLAGS += \ + -Os + # these assembly files are safe to build on aarch64 o/$(MODE)/libc/calls/getcontext.o: libc/calls/getcontext.S @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) -c $< 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/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/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..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; @@ -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_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/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..e9548884e 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 (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/cp.internal.h b/libc/calls/cp.internal.h index d727fbdd0..ca75f030a 100644 --- a/libc/calls/cp.internal.h +++ b/libc/calls/cp.internal.h @@ -10,12 +10,12 @@ void end_cancelation_point(int); #define END_CANCELATION_POINT (void)0 #else #define BEGIN_CANCELATION_POINT \ - do { \ - int _Cp; \ + do { \ + int _Cp; \ _Cp = begin_cancelation_point() #define END_CANCELATION_POINT \ end_cancelation_point(_Cp); \ - } \ + } \ while (0) #endif 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/dup.c b/libc/calls/dup.c index af23647e9..caab149ee 100644 --- a/libc/calls/dup.c +++ b/libc/calls/dup.c @@ -23,8 +23,8 @@ #include "libc/dce.h" #include "libc/intrin/strace.internal.h" #include "libc/intrin/weaken.h" -#include "libc/sysv/errfuns.h" #include "libc/runtime/zipos.internal.h" +#include "libc/sysv/errfuns.h" /** * Duplicates file descriptor. diff --git a/libc/calls/dup2.c b/libc/calls/dup2.c index a1c370879..34d42dd12 100644 --- a/libc/calls/dup2.c +++ b/libc/calls/dup2.c @@ -66,15 +66,17 @@ 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()) { + if (!IsWindows()) { if (__isfdkind(oldfd, kFdZip) || __isfdkind(newfd, kFdZip)) { if (__vforked) { return enotsup(); 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..830a50830 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); } @@ -328,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/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..97a941b1c 100644 --- a/libc/calls/fstat-nt.c +++ b/libc/calls/fstat-nt.c @@ -97,12 +97,14 @@ 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(); 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); @@ -174,7 +176,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..b8b75e8f8 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; @@ -58,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/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/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/getcpu.c b/libc/calls/getcpu.c index c25c52bad..bdc97089e 100644 --- a/libc/calls/getcpu.c +++ b/libc/calls/getcpu.c @@ -48,23 +48,15 @@ int getcpu(unsigned *out_opt_cpu, unsigned *out_opt_node) { } else { return __winerr(); } - } else if (IsXnuSilicon()) { - if (__syslib->__version >= 9) { - size_t cpu64; - errno_t err = __syslib->__pthread_cpu_number_np(&cpu64); - if (!err) { - cpu = cpu64; - node = 0; - } else { - errno = err; - return -1; - } - } else { - return enosys(); - } + } else if (IsAarch64()) { + long tpidr_el0; + asm("mrs\t%0,tpidr_el0" : "=r"(tpidr_el0)); + cpu = tpidr_el0 & 255; + node = 0; } 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/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/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/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 b28291eff..eb28d34c4 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) { @@ -63,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 96fe671d8..067e7a0a3 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. @@ -205,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; } @@ -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; } 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..1e5abd48a 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 (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/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/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..87ea17031 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" @@ -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)) { @@ -244,11 +245,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 +350,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 +453,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 +463,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 +473,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 +485,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 +526,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 +555,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/isapemagic.c b/libc/calls/isapemagic.c index fa4f8b75e..a1ca56460 100644 --- a/libc/calls/isapemagic.c +++ b/libc/calls/isapemagic.c @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/serialize.h" #include "libc/proc/execve.internal.h" +#include "libc/serialize.h" /** * Returns true if executable image is supported by APE Loader. 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/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/linkat.c b/libc/calls/linkat.c index d2a780d0b..1b87e3093 100644 --- a/libc/calls/linkat.c +++ b/libc/calls/linkat.c @@ -24,8 +24,8 @@ #include "libc/intrin/describeflags.internal.h" #include "libc/intrin/strace.internal.h" #include "libc/intrin/weaken.h" -#include "libc/sysv/errfuns.h" #include "libc/runtime/zipos.internal.h" +#include "libc/sysv/errfuns.h" /** * Creates hard filesystem link. 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/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/mkdirat.c b/libc/calls/mkdirat.c index fbc1d51c3..d23facbf7 100644 --- a/libc/calls/mkdirat.c +++ b/libc/calls/mkdirat.c @@ -24,9 +24,9 @@ #include "libc/intrin/describeflags.internal.h" #include "libc/intrin/strace.internal.h" #include "libc/intrin/weaken.h" +#include "libc/runtime/zipos.internal.h" #include "libc/sysv/consts/at.h" #include "libc/sysv/errfuns.h" -#include "libc/runtime/zipos.internal.h" /** * Creates directory a.k.a. folder. 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..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,19 +73,21 @@ 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; 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); @@ -94,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) { @@ -112,7 +112,8 @@ textwindows int mkntcmdline(char16_t cmdline[32767], char *const argv[]) { } } } - if (!x) break; + if (!x) + break; if (x == '\\') { ++slashes; } else if (x == '"') { @@ -120,22 +121,21 @@ 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 APPEND(w); + do + APPEND(w); 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/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..3cd4c8ae0 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" @@ -33,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__ @@ -44,14 +51,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, + .lpAttributeList = alist, + }; + info.StartupInfo.cb = sizeof(info); + 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,92 +232,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/calls/open-nt.c b/libc/calls/open-nt.c index 50b7954ba..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)) { @@ -184,7 +193,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,13 +212,16 @@ 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")) { 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/openat-metal.c b/libc/calls/openat-metal.c index fa2b45b82..34d4d799d 100644 --- a/libc/calls/openat-metal.c +++ b/libc/calls/openat-metal.c @@ -27,33 +27,39 @@ #include "libc/mem/mem.h" #include "libc/runtime/pc.internal.h" #include "libc/runtime/runtime.h" +#include "libc/runtime/zipos.internal.h" #include "libc/str/str.h" #include "libc/sysv/consts/at.h" #include "libc/sysv/consts/map.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/prot.h" #include "libc/sysv/errfuns.h" -#include "libc/runtime/zipos.internal.h" #ifdef __x86_64__ 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..d36684bfd 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, // @@ -1023,18 +1025,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 +1310,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; } @@ -1635,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[] = { @@ -1644,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)), @@ -2170,7 +2175,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 +2198,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..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 @@ -249,12 +253,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 +283,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/pread.c b/libc/calls/pread.c index c13dcab36..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) { @@ -72,7 +77,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/preadv.c b/libc/calls/preadv.c index 9cba11979..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) { @@ -84,7 +115,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) { @@ -111,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/printfds.c b/libc/calls/printfds.c index 4f05e1680..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"; } @@ -49,13 +51,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/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/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/pwrite.c b/libc/calls/pwrite.c index b777e06ff..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) { @@ -65,7 +70,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/pwritev.c b/libc/calls/pwritev.c index 4f612a79e..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()) { @@ -83,7 +112,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) { @@ -115,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/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..931e9b1f9 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; } @@ -771,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); } @@ -778,7 +797,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 +818,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 +836,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/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/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/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/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/readwrite-nt.c b/libc/calls/readwrite-nt.c index 8ae3baa0d..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(); } @@ -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/reboot.c b/libc/calls/reboot.c index 062c5fb92..76ce77436 100644 --- a/libc/calls/reboot.c +++ b/libc/calls/reboot.c @@ -19,7 +19,6 @@ #include "libc/calls/calls.h" #include "libc/calls/struct/framebuffervirtualscreeninfo.h" #include "libc/dce.h" -#include "libc/nt/enum/version.h" #include "libc/nt/system.h" #include "libc/runtime/runtime.h" #include "libc/sysv/errfuns.h" @@ -72,9 +71,7 @@ int reboot(int howto) { } else { howto |= kNtShutdownForceSelf; howto |= kNtShutdownForceOthers; - if (NtGetVersion() >= kNtVersionWindows8) { - howto |= kNtShutdownHybrid; - } + howto |= kNtShutdownHybrid; if (immediately) { ok = !!InitiateShutdown(0, 0, 0, howto | kNtShutdownGraceOverride, 0); } else { 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/renameat.c b/libc/calls/renameat.c index d00c82941..02106a4e8 100644 --- a/libc/calls/renameat.c +++ b/libc/calls/renameat.c @@ -24,9 +24,9 @@ #include "libc/intrin/describeflags.internal.h" #include "libc/intrin/strace.internal.h" #include "libc/intrin/weaken.h" +#include "libc/runtime/zipos.internal.h" #include "libc/sysv/consts/at.h" #include "libc/sysv/errfuns.h" -#include "libc/runtime/zipos.internal.h" /** * Renames files relative to directories. 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..12a0a832b 100644 --- a/libc/calls/sched_getcpu.c +++ b/libc/calls/sched_getcpu.c @@ -17,14 +17,12 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/calls/calls.h" -#include "libc/calls/struct/cpuset.h" #include "libc/dce.h" #include "libc/errno.h" #include "libc/nexgen32e/rdtscp.h" #include "libc/nexgen32e/x86feature.h" #include "libc/nt/struct/processornumber.h" #include "libc/nt/synchronization.h" -#include "libc/runtime/syslib.internal.h" #include "libc/sysv/errfuns.h" int sys_getcpu(unsigned *opt_cpu, unsigned *opt_node, void *tcache); @@ -38,27 +36,19 @@ int sched_getcpu(void) { unsigned tsc_aux; rdtscp(&tsc_aux); return TSC_AUX_CORE(tsc_aux); + } else if (IsAarch64()) { + long tpidr_el0; + asm("mrs\t%0,tpidr_el0" : "=r"(tpidr_el0)); + return tpidr_el0 & 255; } else if (IsWindows()) { struct NtProcessorNumber pn; GetCurrentProcessorNumberEx(&pn); return 64 * pn.Group + pn.Number; - } else if (IsXnuSilicon()) { - if (__syslib->__version >= 9) { - size_t cpu; - errno_t err = __syslib->__pthread_cpu_number_np(&cpu); - if (!err) { - return cpu; - } else { - errno = err; - return -1; - } - } else { - return enosys(); - } } 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/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/sig.c b/libc/calls/sig.c index b0011fdfe..c1ce797fb 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); @@ -299,7 +301,7 @@ static textwindows wontreturn void __sig_tramp(struct SignalFrame *sf) { } // sends signal to another specific thread which is ref'd -static int __sig_killer(struct PosixThread *pt, int sig, int sic) { +static textwindows int __sig_killer(struct PosixThread *pt, int sig, int sic) { unsigned rva = __sighandrvas[sig]; unsigned flags = __sighandflags[sig]; @@ -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) { @@ -459,66 +462,7 @@ textwindows void __sig_generate(int sig, int sic) { ALLOW_SIGNALS; } -static int __sig_crash_sig(struct NtExceptionPointers *ep, int *code) { - switch (ep->ExceptionRecord->ExceptionCode) { - case kNtSignalBreakpoint: - *code = TRAP_BRKPT; - return SIGTRAP; - case kNtSignalIllegalInstruction: - *code = ILL_ILLOPC; - return SIGILL; - case kNtSignalPrivInstruction: - *code = ILL_PRVOPC; - return SIGILL; - case kNtSignalInPageError: - case kNtStatusStackOverflow: - *code = SEGV_MAPERR; - return SIGSEGV; - case kNtSignalGuardPage: - case kNtSignalAccessViolation: - *code = SEGV_ACCERR; - return SIGSEGV; - case kNtSignalInvalidHandle: - case kNtSignalInvalidParameter: - case kNtSignalAssertionFailure: - *code = SI_USER; - return SIGABRT; - case kNtStatusIntegerOverflow: - *code = FPE_INTOVF; - return SIGFPE; - case kNtSignalFltDivideByZero: - *code = FPE_FLTDIV; - return SIGFPE; - case kNtSignalFltOverflow: - *code = FPE_FLTOVF; - return SIGFPE; - case kNtSignalFltUnderflow: - *code = FPE_FLTUND; - return SIGFPE; - case kNtSignalFltInexactResult: - *code = FPE_FLTRES; - return SIGFPE; - case kNtSignalFltDenormalOperand: - case kNtSignalFltInvalidOperation: - case kNtSignalFltStackCheck: - case kNtSignalIntegerDivideByZero: - case kNtSignalFloatMultipleFaults: - case kNtSignalFloatMultipleTraps: - *code = FPE_FLTINV; - return SIGFPE; - case kNtSignalDllNotFound: - case kNtSignalOrdinalNotFound: - case kNtSignalEntrypointNotFound: - case kNtSignalDllInitFailed: - *code = SI_KERNEL; - return SIGSYS; - default: - *code = ep->ExceptionRecord->ExceptionCode; - return SIGSEGV; - } -} - -static char *__sig_stpcpy(char *d, const char *s) { +static textwindows char *__sig_stpcpy(char *d, const char *s) { size_t i; for (i = 0;; ++i) { if (!(d[i] = s[i])) { @@ -527,8 +471,24 @@ static char *__sig_stpcpy(char *d, const char *s) { } } -static void __sig_unmaskable(struct NtExceptionPointers *ep, int code, int sig, - struct CosmoTib *tib) { +static textwindows wontreturn void __sig_death(int sig, const char *thing) { +#ifndef TINY + intptr_t hStderr; + char sigbuf[21], s[128], *p; + hStderr = GetStdHandle(kNtStdErrorHandle); + p = __sig_stpcpy(s, "Terminating on "); + p = __sig_stpcpy(p, thing); + p = __sig_stpcpy(p, strsignal_r(sig, sigbuf)); + p = __sig_stpcpy(p, + ". Pass --strace and/or ShowCrashReports() for details.\n"); + WriteFile(hStderr, s, p - s, 0, 0); +#endif + __sig_terminate(sig); +} + +static textwindows void __sig_unmaskable(struct NtExceptionPointers *ep, + int code, int sig, + struct CosmoTib *tib) { // log vital crash information reliably for --strace before doing much // we don't print this without the flag since raw numbers scare people @@ -546,17 +506,7 @@ static void __sig_unmaskable(struct NtExceptionPointers *ep, int code, int sig, // exception, then print a friendly helpful hint message to stderr unsigned rva = __sighandrvas[sig]; if (rva == (intptr_t)SIG_DFL || rva == (intptr_t)SIG_IGN) { -#ifndef TINY - intptr_t hStderr; - char sigbuf[21], s[128], *p; - hStderr = GetStdHandle(kNtStdErrorHandle); - p = __sig_stpcpy(s, "Terminating on uncaught "); - p = __sig_stpcpy(p, strsignal_r(sig, sigbuf)); - p = __sig_stpcpy( - p, ". Pass --strace and/or ShowCrashReports() for details.\n"); - WriteFile(hStderr, s, p - s, 0, 0); -#endif - __sig_terminate(sig); + __sig_death(sig, "uncaught "); } // if this signal handler is configured to auto-reset to the default @@ -577,16 +527,22 @@ static void __sig_unmaskable(struct NtExceptionPointers *ep, int code, int sig, } // call the user signal handler - // with a temporarily replaced signal mask // and a modifiable view of the faulting code's cpu state + // temporarily replace signal mask while calling crash handler + // abort process if sig is already blocked to avoid crash loop // note ucontext_t is a hefty data structures on top of NtContext ucontext_t ctx = {0}; 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); + if (ctx.uc_sigmask & (1ull << (sig - 1))) { + __sig_death(sig, "masked "); + __sig_terminate(sig); + } __sig_handler(rva)(sig, &si, &ctx); atomic_store_explicit(&tib->tib_sigmask, ctx.uc_sigmask, memory_order_release); @@ -668,7 +624,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/sig.internal.h b/libc/calls/sig.internal.h index 49e65c605..4175194f0 100644 --- a/libc/calls/sig.internal.h +++ b/libc/calls/sig.internal.h @@ -1,6 +1,7 @@ #ifndef COSMOPOLITAN_LIBC_CALLS_SIGNALS_INTERNAL_H_ #define COSMOPOLITAN_LIBC_CALLS_SIGNALS_INTERNAL_H_ #include "libc/calls/struct/sigset.h" +#include "libc/nt/struct/ntexceptionpointers.h" #include "libc/thread/posixthread.internal.h" #define SIG_HANDLED_NO_RESTART 1 @@ -17,11 +18,12 @@ extern struct Signals __sig; bool __sig_ignored(int); int __sig_check(void); +int __sig_crash_sig(struct NtExceptionPointers *, int *); +int __sig_get(sigset_t); int __sig_kill(struct PosixThread *, int, int); int __sig_mask(int, const sigset_t *, sigset_t *); -int __sig_relay(int, int, sigset_t); int __sig_raise(int, int); -int __sig_get(sigset_t); +int __sig_relay(int, int, sigset_t); void __sig_delete(int); void __sig_generate(int, int); void __sig_init(void); diff --git a/libc/calls/sigaction.c b/libc/calls/sigaction.c index 3d4edd901..df751f353 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(); @@ -247,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 *)oldact)->sa_flags & SA_RESETHAND)) { + ((struct sigaction_silicon *)oldact)->sa_flags |= SA_RESETHAND; + } } if (rc != -1) { sigaction_native2cosmo((union metasigaction *)oldact); @@ -410,7 +421,7 @@ static int __sigaction(int sig, const struct sigaction *act, * ctx->uc_mcontext.rip += xedd.length; * } * - * void OnCrash(int sig, struct siginfo *si, void *vctx) { + * void OnCrash(int sig, siginfo_t *si, void *vctx) { * struct ucontext *ctx = vctx; * SkipOverFaultingInstruction(ctx); * ContinueOnCrash(); // reinstall here in case *rip faults 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/sigcrashsig.c b/libc/calls/sigcrashsig.c new file mode 100644 index 000000000..27d710a5d --- /dev/null +++ b/libc/calls/sigcrashsig.c @@ -0,0 +1,107 @@ +/*-*- 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/sig.internal.h" +#include "libc/intrin/pushpop.internal.h" +#include "libc/nt/enum/signal.h" +#include "libc/nt/enum/status.h" +#include "libc/nt/struct/ntexceptionpointers.h" + +// this is all a mandatory dependency of winmain +// so, we trade away maintanibility for tininess +// see libc/sysv/consts.sh for canonical magnums + +#define SIGILL_ pushpop(4) +#define SIGTRAP_ pushpop(5) +#define SIGABRT_ pushpop(6) +#define SIGFPE_ pushpop(8) +#define SIGSEGV_ pushpop(11) +#define SIGSYS_ pushpop(31) + +#define TRAP_BRKPT_ pushpop(1) +#define ILL_ILLOPC_ pushpop(1) +#define ILL_PRVOPC_ pushpop(5) +#define SEGV_MAPERR_ pushpop(1) +#define SEGV_ACCERR_ pushpop(2) +#define SI_USER_ pushpop(0) +#define FPE_FLTDIV_ pushpop(3) +#define FPE_FLTOVF_ pushpop(4) +#define FPE_INTOVF_ pushpop(2) +#define FPE_FLTUND_ pushpop(5) +#define FPE_FLTRES_ pushpop(6) +#define FPE_FLTINV_ pushpop(7) +#define SI_KERNEL_ 0x80 + +textwindows int __sig_crash_sig(struct NtExceptionPointers *ep, int *code) { + switch (ep->ExceptionRecord->ExceptionCode) { + case kNtSignalBreakpoint: + *code = TRAP_BRKPT_; + return SIGTRAP_; + case kNtSignalIllegalInstruction: + *code = ILL_ILLOPC_; + return SIGILL_; + case kNtSignalPrivInstruction: + *code = ILL_PRVOPC_; + return SIGILL_; + case kNtSignalInPageError: + case kNtStatusStackOverflow: + *code = SEGV_MAPERR_; + return SIGSEGV_; + case kNtSignalGuardPage: + case kNtSignalAccessViolation: + *code = SEGV_ACCERR_; + return SIGSEGV_; + case kNtSignalInvalidHandle: + case kNtSignalInvalidParameter: + case kNtSignalAssertionFailure: + *code = SI_USER_; + return SIGABRT_; + case kNtStatusIntegerOverflow: + *code = FPE_INTOVF_; + return SIGFPE_; + case kNtSignalFltDivideByZero: + *code = FPE_FLTDIV_; + return SIGFPE_; + case kNtSignalFltOverflow: + *code = FPE_FLTOVF_; + return SIGFPE_; + case kNtSignalFltUnderflow: + *code = FPE_FLTUND_; + return SIGFPE_; + case kNtSignalFltInexactResult: + *code = FPE_FLTRES_; + return SIGFPE_; + case kNtSignalFltDenormalOperand: + case kNtSignalFltInvalidOperation: + case kNtSignalFltStackCheck: + case kNtSignalIntegerDivideByZero: + case kNtSignalFloatMultipleFaults: + case kNtSignalFloatMultipleTraps: + *code = FPE_FLTINV_; + return SIGFPE_; + case kNtSignalDllNotFound: + case kNtSignalOrdinalNotFound: + case kNtSignalEntrypointNotFound: + case kNtSignalDllInitFailed: + *code = SI_KERNEL_; + return SIGSYS_; + default: + *code = ep->ExceptionRecord->ExceptionCode; + return SIGSEGV_; + } +} diff --git a/libc/calls/sigenter-linux.c b/libc/calls/sigenter-linux.c index 7baa17e43..b0a14322d 100644 --- a/libc/calls/sigenter-linux.c +++ b/libc/calls/sigenter-linux.c @@ -31,7 +31,7 @@ #ifdef __x86_64__ -privileged void __sigenter_wsl(int sig, struct siginfo *info, ucontext_t *ctx) { +privileged void __sigenter_wsl(int sig, siginfo_t *info, ucontext_t *ctx) { int rva, flags; rva = __sighandrvas[sig]; if (rva >= kSigactionMinRva) { diff --git a/libc/calls/sigenter-netbsd.c b/libc/calls/sigenter-netbsd.c index 6e3fef37c..9e20817df 100644 --- a/libc/calls/sigenter-netbsd.c +++ b/libc/calls/sigenter-netbsd.c @@ -43,7 +43,7 @@ privileged void __sigenter_netbsd(int sig, struct siginfo_netbsd *si, CheckLargeStackAllocation(&uc, sizeof(uc)); #pragma GCC pop_options int rva, flags; - struct siginfo si2; + siginfo_t si2; rva = __sighandrvas[sig]; if (rva >= kSigactionMinRva) { flags = __sighandflags[sig]; diff --git a/libc/calls/sigenter-openbsd.c b/libc/calls/sigenter-openbsd.c index 2c0242eac..5be46f32a 100644 --- a/libc/calls/sigenter-openbsd.c +++ b/libc/calls/sigenter-openbsd.c @@ -41,7 +41,7 @@ privileged void __sigenter_openbsd(int sig, struct siginfo_openbsd *openbsdinfo, #pragma GCC diagnostic ignored "-Wframe-larger-than=" struct Goodies { ucontext_t uc; - struct siginfo si; + siginfo_t si; } g; CheckLargeStackAllocation(&g, sizeof(g)); #pragma GCC pop_options 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/calls/siginfo2cosmo.c b/libc/calls/siginfo2cosmo.c index 6c0f856c9..77040820b 100644 --- a/libc/calls/siginfo2cosmo.c +++ b/libc/calls/siginfo2cosmo.c @@ -21,8 +21,7 @@ #include "libc/dce.h" #include "libc/sysv/consts/sig.h" -privileged void __siginfo2cosmo(struct siginfo *si, - const union siginfo_meta *m) { +privileged void __siginfo2cosmo(siginfo_t *si, const union siginfo_meta *m) { void *si_addr; int32_t si_signo; int32_t si_errno; @@ -93,7 +92,7 @@ privileged void __siginfo2cosmo(struct siginfo *si, } } - *si = (struct siginfo){0}; + *si = (siginfo_t){0}; si->si_signo = si_signo; si->si_errno = si_errno; si->si_code = si_code; 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..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. @@ -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/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/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/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/struct/sigaction.h b/libc/calls/struct/sigaction.h index 49d0d6fe3..b7e4c7fc7 100644 --- a/libc/calls/struct/sigaction.h +++ b/libc/calls/struct/sigaction.h @@ -5,7 +5,7 @@ COSMOPOLITAN_C_START_ typedef void (*sighandler_t)(int); -typedef void (*sigaction_f)(int, struct siginfo *, void *); +typedef void (*sigaction_f)(int, siginfo_t *, void *); struct sigaction { union { diff --git a/libc/calls/struct/sigaction.internal.h b/libc/calls/struct/sigaction.internal.h index 00a425d70..bf69a81db 100644 --- a/libc/calls/struct/sigaction.internal.h +++ b/libc/calls/struct/sigaction.internal.h @@ -60,11 +60,11 @@ union metasigaction { struct sigaction_xnu_out xnu_out; }; -void __sigenter_xnu(int, struct siginfo *, void *); -void __sigenter_wsl(int, struct siginfo *, void *); -void __sigenter_netbsd(int, struct siginfo *, void *); -void __sigenter_freebsd(int, struct siginfo *, void *); -void __sigenter_openbsd(int, struct siginfo *, void *); +void __sigenter_xnu(int, siginfo_t *, void *); +void __sigenter_wsl(int, siginfo_t *, void *); +void __sigenter_netbsd(int, siginfo_t *, void *); +void __sigenter_freebsd(int, siginfo_t *, void *); +void __sigenter_openbsd(int, siginfo_t *, void *); const char *DescribeSigaction(char[256], int, const struct sigaction *); #define DescribeSigaction(rc, sa) DescribeSigaction(alloca(256), rc, sa) diff --git a/libc/calls/struct/siginfo-meta.internal.h b/libc/calls/struct/siginfo-meta.internal.h index 4fdbdf389..d48426c34 100644 --- a/libc/calls/struct/siginfo-meta.internal.h +++ b/libc/calls/struct/siginfo-meta.internal.h @@ -8,14 +8,14 @@ COSMOPOLITAN_C_START_ union siginfo_meta { - struct siginfo linux; + siginfo_t linux; struct siginfo_xnu xnu; struct siginfo_freebsd freebsd; struct siginfo_openbsd openbsd; struct siginfo_netbsd netbsd; }; -void __siginfo2cosmo(struct siginfo *, const union siginfo_meta *); +void __siginfo2cosmo(siginfo_t *, const union siginfo_meta *); COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_CALLS_STRUCT_SIGINFO_META_INTERNAL_H_ */ 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/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/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 aea937cc3..dd18a7fee 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 (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 (sysctl(mib, ARRAYLEN(mib), &x, &n, 0, 0) == -1) + return 0; return x; } @@ -62,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/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..b0f49e803 100644 --- a/libc/calls/tcsetattr-nt.c +++ b/libc/calls/tcsetattr-nt.c @@ -25,7 +25,6 @@ #include "libc/intrin/nomultics.internal.h" #include "libc/nt/console.h" #include "libc/nt/enum/consolemodeflags.h" -#include "libc/nt/version.h" #include "libc/str/str.h" #include "libc/sysv/consts/baud.internal.h" #include "libc/sysv/consts/termios.h" @@ -37,15 +36,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 | @@ -93,9 +95,7 @@ textwindows int tcsetattr_nt(int fd, int opt, const struct termios *tio) { if (!(tio->c_oflag & ONLCR)) { outmode |= kNtDisableNewlineAutoReturn; } - if (IsAtLeastWindows10()) { - outmode |= kNtEnableVirtualTerminalProcessing; - } + outmode |= kNtEnableVirtualTerminalProcessing; // tune the win32 configuration unassert(SetConsoleMode(hInput, inmode)); 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/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/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.c b/libc/calls/ttyname.c index 9a2ff2a5a..31b1fc202 100644 --- a/libc/calls/ttyname.c +++ b/libc/calls/ttyname.c @@ -17,10 +17,10 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/calls/calls.h" -#include "libc/stdio/sysparam.h" #include "libc/errno.h" #include "libc/log/log.h" #include "libc/paths.h" +#include "libc/stdio/sysparam.h" /** * Returns name of terminal. 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/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/calls/uname.c b/libc/calls/uname.c index 2f03c15b4..754142794 100644 --- a/libc/calls/uname.c +++ b/libc/calls/uname.c @@ -30,7 +30,6 @@ #include "libc/log/log.h" #include "libc/macros.internal.h" #include "libc/nt/enum/computernameformat.h" -#include "libc/nt/struct/teb.h" #include "libc/nt/systeminfo.h" #include "libc/runtime/runtime.h" #include "libc/str/str.h" @@ -62,7 +61,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'))) { @@ -81,34 +80,13 @@ static textwindows void GetNtName(char *name, int kind) { } } -static inline textwindows int GetNtMajorVersion(void) { -#ifdef __x86_64__ - return NtGetPeb()->OSMajorVersion; -#else - return 0; -#endif -} - -static inline textwindows int GetNtMinorVersion(void) { -#ifdef __x86_64__ - return NtGetPeb()->OSMinorVersion; -#else - return 0; -#endif -} - -static inline textwindows int GetNtBuildNumber(void) { -#ifdef __x86_64__ - return NtGetPeb()->OSBuildNumber; -#else - return 0; -#endif -} - static textwindows void GetNtVersion(char *p) { - p = FormatUint32(p, GetNtMajorVersion()), *p++ = '.'; - p = FormatUint32(p, GetNtMinorVersion()), *p++ = '-'; - p = FormatUint32(p, GetNtBuildNumber()); + // We could ask GetVersionExW() for this information, but it'll simply + // report what we put in the MajorOperatingSystemVersion of the PE ape + // header fields. Windows doesn't want us detecting versions it seems. + // Chances are they bake all old versions of Windows into Windows, and + // run us on the intended one, like some kind of Docker container. Heh + strcpy(p, "10.0"); } static const char *Str(int rc, const char *s) { diff --git a/libc/calls/unlinkat.c b/libc/calls/unlinkat.c index a1fe186eb..939c77091 100644 --- a/libc/calls/unlinkat.c +++ b/libc/calls/unlinkat.c @@ -26,9 +26,9 @@ #include "libc/intrin/describeflags.internal.h" #include "libc/intrin/strace.internal.h" #include "libc/intrin/weaken.h" +#include "libc/runtime/zipos.internal.h" #include "libc/sysv/consts/s.h" #include "libc/sysv/errfuns.h" -#include "libc/runtime/zipos.internal.h" /** * Deletes inode and maybe the file too. 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..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. @@ -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/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 b2c520a81..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], @@ -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/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/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..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)) { @@ -67,7 +72,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 +97,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 +115,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/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-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/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/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/libc/cosmo.h b/libc/cosmo.h index c84b731eb..9788bb3ca 100644 --- a/libc/cosmo.h +++ b/libc/cosmo.h @@ -2,9 +2,12 @@ #define COSMOPOLITAN_LIBC_COSMO_H_ COSMOPOLITAN_C_START_ -errno_t cosmo_once(_Atomic(uint32_t) *, void (*)(void)); +errno_t cosmo_once(_Atomic(unsigned) *, void (*)(void)) libcesque; int systemvpe(const char *, char *const[], char *const[]) libcesque; -char *GetProgramExecutableName(void); +char *GetProgramExecutableName(void) libcesque; +void unleaf(void) libcesque; +int __demangle(char *, const char *, size_t) libcesque; +int __is_mangled(const char *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_COSMO_H_ */ diff --git a/libc/dlopen/BUILD.mk b/libc/dlopen/BUILD.mk index 4db5aa081..2c254ca8d 100644 --- a/libc/dlopen/BUILD.mk +++ b/libc/dlopen/BUILD.mk @@ -54,6 +54,8 @@ $(LIBC_DLOPEN_A_OBJS): private \ o/$(MODE)/libc/dlopen/foreign_tramp.o: libc/dlopen/foreign_tramp.S @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) -c $< +$(LIBC_DLOPEN_A_OBJS): private COPTS += -fno-sanitize=address + LIBC_DLOPEN_LIBS = $(foreach x,$(LIBC_DLOPEN_ARTIFACTS),$($(x))) LIBC_DLOPEN_SRCS = $(foreach x,$(LIBC_DLOPEN_ARTIFACTS),$($(x)_SRCS)) LIBC_DLOPEN_HDRS = $(foreach x,$(LIBC_DLOPEN_ARTIFACTS),$($(x)_HDRS)) 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/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/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/elf/tinyelf.internal.h b/libc/elf/tinyelf.internal.h index ca00d3ce7..c4e20ef87 100644 --- a/libc/elf/tinyelf.internal.h +++ b/libc/elf/tinyelf.internal.h @@ -5,9 +5,9 @@ #include "libc/elf/struct/phdr.h" #include "libc/elf/struct/shdr.h" #include "libc/elf/struct/sym.h" -#include "libc/serialize.h" #include "libc/limits.h" #include "libc/log/libfatal.internal.h" +#include "libc/serialize.h" COSMOPOLITAN_C_START_ #define GetStr(tab, rva) ((char *)(tab) + (rva)) @@ -30,7 +30,8 @@ static inline char *GetStrtab(const Elf64_Ehdr *e, size_t *n) { if (shdr->sh_type == SHT_STRTAB) { name = GetSectionName(e, GetShdr(e, i)); if (name && READ64LE(name) == READ64LE(".strtab")) { - if (n) *n = shdr->sh_size; + if (n) + *n = shdr->sh_size; return GetSection(e, shdr); } } @@ -44,7 +45,8 @@ static inline Elf64_Sym *GetSymtab(const Elf64_Ehdr *e, Elf64_Xword *n) { for (i = e->e_shnum; i-- > 0;) { shdr = GetShdr(e, i); if (shdr->sh_type == SHT_SYMTAB) { - if (n) *n = shdr->sh_size / sizeof(Elf64_Sym); + if (n) + *n = shdr->sh_size / sizeof(Elf64_Sym); return GetSection(e, shdr); } } @@ -60,14 +62,19 @@ static inline void GetImageRange(const Elf64_Ehdr *elf, intptr_t *x, end = 0; for (i = 0; i < elf->e_phnum; ++i) { phdr = GetPhdr(elf, i); - if (phdr->p_type != PT_LOAD) continue; + if (phdr->p_type != PT_LOAD) + continue; pstart = phdr->p_vaddr; pend = phdr->p_vaddr + phdr->p_memsz; - if (pstart < start) start = pstart; - if (pend > end) end = pend; + if (pstart < start) + start = pstart; + if (pend > end) + end = pend; } - if (x) *x = start; - if (y) *y = end; + if (x) + *x = start; + if (y) + *y = end; } static inline bool GetElfSymbolValue(const Elf64_Ehdr *ehdr, const char *name, @@ -75,8 +82,10 @@ static inline bool GetElfSymbolValue(const Elf64_Ehdr *ehdr, const char *name, Elf64_Xword i, n; const char *stab; const Elf64_Sym *st; - if (!(stab = GetStrtab(ehdr, 0))) return false; - if (!(st = GetSymtab(ehdr, &n))) return false; + if (!(stab = GetStrtab(ehdr, 0))) + return false; + if (!(st = GetSymtab(ehdr, &n))) + return false; for (i = 0; i < n; ++i) { if (!__strcmp(GetStr(stab, st[i].st_name), name)) { *res = st[i].st_value; diff --git a/libc/errno.h b/libc/errno.h index ed0b39523..8a3a04f30 100644 --- a/libc/errno.h +++ b/libc/errno.h @@ -29,7 +29,7 @@ COSMOPOLITAN_C_START_ #define errno \ (*__extension__({ \ errno_t *__ep; \ - __asm__("sub\t%0,x28,#192-0x3c" : "=r"(__ep)); \ + __asm__("sub\t%0,x28,#512-0x3c" : "=r"(__ep)); \ __ep; \ })) #else @@ -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; diff --git a/libc/fmt/BUILD.mk b/libc/fmt/BUILD.mk index 4114c6ba7..2ff357eb9 100644 --- a/libc/fmt/BUILD.mk +++ b/libc/fmt/BUILD.mk @@ -55,7 +55,8 @@ $(LIBC_FMT_A).pkg: \ $(LIBC_FMT_A_OBJS): private \ CFLAGS += \ - -fno-jump-tables + -fno-jump-tables \ + -fno-sanitize=address o/$(MODE)/libc/fmt/formatint64.o \ o/$(MODE)/libc/fmt/formatint64thousands.o \ 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/internal.h b/libc/fmt/internal.h index 7ea0ca33a..b05b1085b 100644 --- a/libc/fmt/internal.h +++ b/libc/fmt/internal.h @@ -3,13 +3,16 @@ #include "libc/errno.h" #include "libc/str/str.h" -#define CONSUME_SPACES(t, s, c) \ - if (endptr) *endptr = (t *)(s); \ - while (c == ' ' || c == '\t') c = *++s +#define CONSUME_SPACES(t, s, c) \ + if (endptr) \ + *endptr = (t *)(s); \ + while (c == ' ' || c == '\t') \ + c = *++s -#define GET_SIGN(s, c, d) \ - d = c == '-' ? -1 : 1; \ - if (c == '-' || c == '+') c = *++s +#define GET_SIGN(s, c, d) \ + d = c == '-' ? -1 : 1; \ + if (c == '-' || c == '+') \ + c = *++s #define GET_RADIX(s, c, r) \ if (!r) { \ 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/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; } } } 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/integral/c.inc b/libc/integral/c.inc index d393ed6f1..301cca916 100644 --- a/libc/integral/c.inc +++ b/libc/integral/c.inc @@ -66,14 +66,15 @@ #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 #if __STDC_VERSION__ + 0 < 201112 -#define _Atomic(TYPE) TYPE volatile +#define _Atomic(t) volatile t * #endif #ifdef __llvm__ @@ -106,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; @@ -540,16 +539,13 @@ typedef struct { #ifdef __x86_64__ #define notpossible \ do { \ - __asm__("nop\n\t" \ - "ud2\n\t" \ - "nop"); \ + __asm__("ud2"); \ __builtin_unreachable(); \ } while (0) #elif defined(__aarch64__) #define notpossible \ do { \ - __asm__("udf\t#0\n\t" \ - "nop"); \ + __asm__("udf\t#0"); \ __builtin_unreachable(); \ } while (0) #else @@ -598,10 +594,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/integral/normalize.inc b/libc/integral/normalize.inc index f844f6374..622fa9bc1 100644 --- a/libc/integral/normalize.inc +++ b/libc/integral/normalize.inc @@ -3,8 +3,8 @@ #endif #define __COSMOPOLITAN_MAJOR__ 3 -#define __COSMOPOLITAN_MINOR__ 3 -#define __COSMOPOLITAN_PATCH__ 3 +#define __COSMOPOLITAN_MINOR__ 4 +#define __COSMOPOLITAN_PATCH__ 0 #define __COSMOPOLITAN__ \ (100000000 * __COSMOPOLITAN_MAJOR__ + 1000000 * __COSMOPOLITAN_MINOR__ + \ __COSMOPOLITAN_PATCH__) diff --git a/libc/intrin/BUILD.mk b/libc/intrin/BUILD.mk index 2ba6fa39b..dcb05dfea 100644 --- a/libc/intrin/BUILD.mk +++ b/libc/intrin/BUILD.mk @@ -82,7 +82,9 @@ 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 o/$(MODE)/libc/intrin/bzero.o \ o/$(MODE)/libc/intrin/memcmp.o \ @@ -132,6 +134,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/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..0f0d9b418 100644 --- a/libc/intrin/asan.c +++ b/libc/intrin/asan.c @@ -35,11 +35,9 @@ #include "libc/log/libfatal.internal.h" #include "libc/log/log.h" #include "libc/macros.internal.h" -#include "libc/mem/hook.internal.h" #include "libc/mem/mem.h" #include "libc/nexgen32e/gc.internal.h" #include "libc/nexgen32e/stackframe.h" -#include "libc/nt/enum/version.h" #include "libc/runtime/memtrack.internal.h" #include "libc/runtime/runtime.h" #include "libc/runtime/stack.h" @@ -57,25 +55,10 @@ #include "libc/thread/tls.h" #include "third_party/dlmalloc/dlmalloc.h" #ifdef __x86_64__ +#ifdef __SANITIZE_ADDRESS__ __static_yoink("_init_asan"); -#if IsModeDbg() -// MODE=dbg -// O(32mb) of morgue memory -// Θ(64) bytes of malloc overhead -#define ASAN_MORGUE_ITEMS 512 -#define ASAN_MORGUE_THRESHOLD 65536 -#define ASAN_TRACE_ITEMS 16 -#else -// MODE=asan -// O(32mb) of morgue memory -// Θ(32) bytes of malloc overhead -#define ASAN_MORGUE_ITEMS 512 -#define ASAN_MORGUE_THRESHOLD 65536 -#define ASAN_TRACE_ITEMS 4 -#endif - /** * @fileoverview Cosmopolitan Address Sanitizer Runtime. * @@ -111,13 +94,6 @@ __static_yoink("_init_asan"); #define ASAN_LOG(...) (void)0 // kprintf(__VA_ARGS__) -#define HOOK(HOOK, IMPL) \ - do { \ - if (_weaken(HOOK)) { \ - *_weaken(HOOK) = IMPL; \ - } \ - } while (0) - #define REQUIRE(FUNC) \ do { \ if (!_weaken(FUNC)) { \ @@ -125,15 +101,6 @@ __static_yoink("_init_asan"); } \ } while (0) -struct AsanTrace { - uint32_t p[ASAN_TRACE_ITEMS]; // assumes linkage into 32-bit space -}; - -struct AsanExtra { - uint64_t size; - struct AsanTrace bt; -}; - struct AsanSourceLocation { char *filename; int line; @@ -159,16 +126,6 @@ struct AsanGlobal { char *odr_indicator; }; -struct ReportOriginHeap { - const unsigned char *a; - int z; -}; - -static struct AsanMorgue { - _Atomic(unsigned) i; - _Atomic(void *) p[ASAN_MORGUE_ITEMS]; -} __asan_morgue; - int __asan_option_detect_stack_use_after_return = 0; void __asan_version_mismatch_check_v8(void) { @@ -181,30 +138,16 @@ static bool __asan_once(void) { &once, &want, true, memory_order_relaxed, memory_order_relaxed); } -#define __asan_unreachable() \ - do { \ - kprintf("%s:%d: __asan_unreachable()\n", __FILE__, __LINE__); \ - __builtin_trap(); \ - } while (0) - static int __asan_bsf(uint64_t x) { _Static_assert(sizeof(long long) == sizeof(uint64_t), ""); return __builtin_ctzll(x); } -static int __asan_bsr(uint64_t x) { - _Static_assert(sizeof(long long) == sizeof(uint64_t), ""); - return __builtin_clzll(x) ^ 63; -} - -static uint64_t __asan_roundup2pow(uint64_t x) { - return 2ull << __asan_bsr(x - 1); -} - 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 +210,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 +275,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 +287,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; } @@ -353,7 +299,7 @@ static void __asan_exit(void) { _Exit(99); } -static __wur __asan_die_f *__asan_die(void) { +__wur __asan_die_f *__asan_die(void) { if (_weaken(__die)) { return _weaken(__die); } else { @@ -371,14 +317,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 +336,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,12 +346,14 @@ 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); } } -static bool __asan_is_mapped(int x) { +bool __asan_is_mapped(int x) { // xxx: we can't lock because no reentrant locks yet int i; bool res; @@ -438,7 +389,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 +402,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 +539,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; } } @@ -711,12 +667,6 @@ static const char *__asan_describe_access_poison(signed char kind) { } } -static __wur __asan_die_f *__asan_report_invalid_pointer(const void *addr) { - kprintf("\n\e[J\e[1;31masan error\e[0m: this corruption at %p shadow %p\n", - addr, SHADOW(addr)); - return __asan_die(); -} - static char *__asan_format_interval(char *p, intptr_t a, intptr_t b) { p = __asan_hexcpy(p, a, 48), *p++ = '-'; p = __asan_hexcpy(p, b, 48); @@ -737,7 +687,7 @@ static char *__asan_format_section(char *p, const void *p1, const void *p2, return p; } -static void __asan_report_memory_origin_image(intptr_t a, int z) { +void __asan_report_memory_origin_image(intptr_t a, int z) { unsigned l, m, r, n, k; struct SymbolTable *st; kprintf("\nthe memory belongs to image symbols\n"); @@ -774,32 +724,8 @@ static void __asan_report_memory_origin_image(intptr_t a, int z) { } } -static void __asan_onmemory(void *x, void *y, size_t n, void *a) { - const unsigned char *p = x; - struct ReportOriginHeap *t = a; - if ((p <= t->a && t->a < p + n) || - (p <= t->a + t->z && t->a + t->z < p + n) || - (t->a < p && p + n <= t->a + t->z)) { - kprintf("%p %,lu bytes [dlmalloc]", x, n); - __asan_print_trace(x); - kprintf("\n"); - } -} - -static void __asan_report_memory_origin_heap(const unsigned char *a, int z) { - struct ReportOriginHeap t; - kprintf("\nthe memory was allocated by\n"); - if (_weaken(malloc_inspect_all)) { - t.a = a; - t.z = z; - _weaken(malloc_inspect_all)(__asan_onmemory, &t); - } else { - kprintf("\tunknown please __static_yoink(\"malloc_inspect_all\");\n"); - } -} - -static void __asan_report_memory_origin(const unsigned char *addr, int size, - signed char kind) { +void __asan_report_memory_origin(const unsigned char *addr, int size, + signed char kind) { switch (kind) { case kAsanStackOverrun: case kAsanGlobalOverrun: @@ -824,7 +750,8 @@ static void __asan_report_memory_origin(const unsigned char *addr, int size, if (__executable_start <= addr && addr < _end) { __asan_report_memory_origin_image((intptr_t)addr, size); } else if (IsAutoFrame((intptr_t)addr >> 16)) { - __asan_report_memory_origin_heap(addr, size); + if (_weaken(__asan_report_memory_origin_heap)) + _weaken(__asan_report_memory_origin_heap)(addr, size); } } @@ -877,7 +804,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 +819,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 +838,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 +868,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); } @@ -953,52 +886,11 @@ static __wur __asan_die_f *__asan_report_memory_fault(void *addr, int size, __asan_fault(SHADOW(addr), -128).kind); } -static void *__asan_morgue_add(void *p) { - return atomic_exchange_explicit( - __asan_morgue.p + (atomic_fetch_add_explicit(&__asan_morgue.i, 1, - memory_order_acq_rel) & - (ARRAYLEN(__asan_morgue.p) - 1)), - p, memory_order_acq_rel); -} - -__attribute__((__destructor__)) static void __asan_morgue_flush(void) { - unsigned i; - for (i = 0; i < ARRAYLEN(__asan_morgue.p); ++i) { - if (atomic_load_explicit(__asan_morgue.p + i, memory_order_acquire)) { - _weaken(dlfree)(atomic_exchange_explicit(__asan_morgue.p + i, 0, - memory_order_release)); - } - } -} - -static size_t __asan_heap_size(size_t n) { - if (n < 0x7fffffff0000) { - n = ROUNDUP(n, _Alignof(struct AsanExtra)); - return __asan_roundup2pow(n + sizeof(struct AsanExtra)); - } else { - return -1; - } -} - -static void __asan_write48(uint64_t *value, uint64_t x) { - uint64_t cookie; - cookie = 'J' | 'T' << 8; - cookie ^= x & 0xffff; - *value = (x & 0xffffffffffff) | cookie << 48; -} - -static bool __asan_read48(uint64_t value, uint64_t *x) { - uint64_t cookie; - cookie = value >> 48; - cookie ^= value & 0xffff; - *x = (int64_t)(value << 16) >> 16; - return cookie == ('J' | 'T' << 8); -} - -static void __asan_rawtrace(struct AsanTrace *bt, const struct StackFrame *bp) { +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 +907,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 @@ -1036,229 +930,6 @@ static void __asan_trace(struct AsanTrace *bt, const struct StackFrame *bp) { } } -#define __asan_trace __asan_rawtrace - -static void *__asan_allocate(size_t a, size_t n, struct AsanTrace *bt, - int underrun, int overrun, int initializer) { - char *p; - size_t c; - struct AsanExtra *e; - if ((p = _weaken(dlmemalign)(a, __asan_heap_size(n)))) { - c = _weaken(dlmalloc_usable_size)(p); - e = (struct AsanExtra *)(p + c - sizeof(*e)); - __asan_unpoison(p, n); - __asan_poison(p - 16, 16, underrun); /* see dlmalloc design */ - __asan_poison(p + n, c - n, overrun); - __asan_memset(p, initializer, n); - __asan_write48(&e->size, n); - __asan_memcpy(&e->bt, bt, sizeof(*bt)); - } - return p; -} - -static void *__asan_allocate_heap(size_t a, size_t n, struct AsanTrace *bt) { - return __asan_allocate(a, n, bt, kAsanHeapUnderrun, kAsanHeapOverrun, 0xf9); -} - -static struct AsanExtra *__asan_get_extra(const void *p, size_t *c) { - int f; - long x, n; - struct AsanExtra *e; - f = (intptr_t)p >> 16; - if (!kisdangerous(p) && - (n = _weaken(dlmalloc_usable_size)((void *)p)) > sizeof(*e) && - !ckd_add(&x, (intptr_t)p, n) && x <= 0x800000000000 && - (LIKELY(f == (int)((x - 1) >> 16)) || !kisdangerous((void *)(x - 1))) && - (LIKELY(f == (int)((x = x - sizeof(*e)) >> 16)) || - __asan_is_mapped(x >> 16)) && - !(x & (_Alignof(struct AsanExtra) - 1))) { - *c = n; - return (struct AsanExtra *)x; - } else { - return 0; - } -} - -size_t __asan_get_heap_size(const void *p) { - size_t n, c; - struct AsanExtra *e; - if ((e = __asan_get_extra(p, &c)) && __asan_read48(e->size, &n)) { - return n; - } - return 0; -} - -static size_t __asan_malloc_usable_size(void *p) { - size_t n, c; - struct AsanExtra *e; - if ((e = __asan_get_extra(p, &c)) && __asan_read48(e->size, &n)) { - return n; - } - __asan_report_invalid_pointer(p)(); - __asan_unreachable(); -} - -int __asan_print_trace(void *p) { - size_t c, i, n; - struct AsanExtra *e; - if (!(e = __asan_get_extra(p, &c))) { - kprintf(" bad pointer"); - return einval(); - } - if (!__asan_read48(e->size, &n)) { - kprintf(" bad cookie"); - return -1; - } - kprintf("\n%p %,lu bytes [asan]", (char *)p, n); - if (!__asan_is_mapped((((intptr_t)p >> 3) + 0x7fff8000) >> 16)) { - kprintf(" (shadow not mapped?!)"); - } - for (i = 0; i < ARRAYLEN(e->bt.p) && e->bt.p[i]; ++i) { - kprintf("\n%*lx %s", 12, e->bt.p[i], - _weaken(GetSymbolByAddr) - ? _weaken(GetSymbolByAddr)(e->bt.p[i]) - : "please __static_yoink(\"GetSymbolByAddr\")"); - } - return 0; -} - -// Returns true if `p` was allocated by an IGNORE_LEAKS(function). -int __asan_is_leaky(void *p) { - int sym; - size_t c, i, n; - 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; - 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; - f = st->addr_base + st->symbols[sym].x; - for (l = _leaky_start; l < _leaky_end; ++l) { - if (f == *l) { - return 1; - } - } - } - return 0; -} - -static void __asan_deallocate(char *p, long kind) { - size_t c, n; - struct AsanExtra *e; - if ((e = __asan_get_extra(p, &c))) { - if (__asan_read48(e->size, &n)) { - __asan_poison(p, c, kind); - if (c <= ASAN_MORGUE_THRESHOLD) { - p = __asan_morgue_add(p); - } - _weaken(dlfree)(p); - } else { - __asan_report_invalid_pointer(p)(); - __asan_unreachable(); - } - } else { - __asan_report_invalid_pointer(p)(); - __asan_unreachable(); - } -} - -void __asan_free(void *p) { - if (!p) return; - __asan_deallocate(p, kAsanHeapFree); -} - -size_t __asan_bulk_free(void *p[], size_t n) { - size_t i; - for (i = 0; i < n; ++i) { - if (p[i]) { - __asan_deallocate(p[i], kAsanHeapFree); - p[i] = 0; - } - } - return 0; -} - -static void *__asan_realloc_nogrow(void *p, size_t n, size_t m, - struct AsanTrace *bt) { - return 0; -} - -static void *__asan_realloc_grow(void *p, size_t n, size_t m, - struct AsanTrace *bt) { - char *q; - if ((q = __asan_allocate_heap(16, n, bt))) { - __asan_memcpy(q, p, m); - __asan_deallocate(p, kAsanHeapRelocated); - } - return q; -} - -static void *__asan_realloc_impl(void *p, size_t n, - void *grow(void *, size_t, size_t, - struct AsanTrace *)) { - size_t c, m; - struct AsanExtra *e; - if ((e = __asan_get_extra(p, &c))) { - if (__asan_read48(e->size, &m)) { - if (n <= m) { // shrink - __asan_poison((char *)p + n, m - n, kAsanHeapOverrun); - __asan_write48(&e->size, n); - return p; - } else if (n <= c - sizeof(struct AsanExtra)) { // small growth - __asan_unpoison((char *)p + m, n - m); - __asan_write48(&e->size, n); - return p; - } else { // exponential growth - return grow(p, n, m, &e->bt); - } - } - } - __asan_report_invalid_pointer(p)(); - __asan_unreachable(); -} - -void *__asan_malloc(size_t size) { - struct AsanTrace bt; - __asan_trace(&bt, RBP); - return __asan_allocate_heap(16, size, &bt); -} - -void *__asan_memalign(size_t align, size_t size) { - struct AsanTrace bt; - __asan_trace(&bt, RBP); - return __asan_allocate_heap(align, size, &bt); -} - -void *__asan_calloc(size_t n, size_t m) { - struct AsanTrace bt; - __asan_trace(&bt, RBP); - if (ckd_mul(&n, n, m)) n = -1; - return __asan_allocate(16, n, &bt, kAsanHeapUnderrun, kAsanHeapOverrun, 0x00); -} - -void *__asan_realloc(void *p, size_t n) { - struct AsanTrace bt; - if (p) { - return __asan_realloc_impl(p, n, __asan_realloc_grow); - } else { - __asan_trace(&bt, RBP); - return __asan_allocate_heap(16, n, &bt); - } -} - -void *__asan_realloc_in_place(void *p, size_t n) { - return p ? __asan_realloc_impl(p, n, __asan_realloc_nogrow) : 0; -} - -int __asan_malloc_trim(size_t pad) { - __asan_morgue_flush(); - return _weaken(dlmalloc_trim) ? _weaken(dlmalloc_trim)(pad) : 0; -} - void __asan_register_globals(struct AsanGlobal g[], int n) { int i; __asan_poison(g, sizeof(*g) * n, kAsanProtected); @@ -1301,19 +972,6 @@ void __asan_report_store(uint8_t *addr, int size) { __asan_unreachable(); } -void *__asan_stack_malloc(size_t size, int classid) { - struct AsanTrace bt; - ASAN_LOG("__asan_stack_malloc(%zu, %d)\n", size, classid); - __asan_trace(&bt, RBP); - return __asan_allocate(16, size, &bt, kAsanStackUnderrun, kAsanStackOverrun, - 0xf9); -} - -void __asan_stack_free(char *p, size_t size, int classid) { - ASAN_LOG("__asan_stack_free(%p, %zu, %d)\n", p, size, classid); - __asan_deallocate(p, kAsanStackFree); -} - void __asan_handle_no_return(void) { // this check is stupid and has far-reaching toilsome ramifications } @@ -1342,7 +1000,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); } @@ -1374,18 +1033,6 @@ void __asan_after_dynamic_init(void) { ASAN_LOG("__asan_after_dynamic_init()\n"); } -void __asan_install_malloc_hooks(void) { - HOOK(hook_free, __asan_free); - HOOK(hook_malloc, __asan_malloc); - HOOK(hook_calloc, __asan_calloc); - HOOK(hook_realloc, __asan_realloc); - HOOK(hook_memalign, __asan_memalign); - HOOK(hook_bulk_free, __asan_bulk_free); - HOOK(hook_malloc_trim, __asan_malloc_trim); - HOOK(hook_realloc_in_place, __asan_realloc_in_place); - HOOK(hook_malloc_usable_size, __asan_malloc_usable_size); -} - void __asan_map_shadow(uintptr_t p, size_t n) { // assume _mmi.lock is held void *addr; @@ -1455,7 +1102,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,18 +1113,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 (IsWindows() && NtGetVersion() < kNtVersionWindows10) { - __write_str("error: asan binaries require windows10\r\n"); - _Exit(0); /* So `make MODE=dbg test` passes w/ Windows7 */ - } - if (_weaken(hook_malloc) || _weaken(hook_calloc) || _weaken(hook_realloc) || - _weaken(hook_realloc_in_place) || _weaken(hook_free) || - _weaken(hook_malloc_usable_size)) { - REQUIRE(dlfree); - REQUIRE(dlmemalign); - REQUIRE(dlmalloc_usable_size); - } + if (!_cmpxchg(&once, false, true)) + return; __asan_shadow_existing_mappings(); __asan_map_shadow((uintptr_t)__executable_start, _end - __executable_start); __asan_map_shadow(0, 4096); @@ -1484,7 +1122,6 @@ void __asan_init(int argc, char **argv, char **envp, unsigned long *auxv) { if (!IsWindows()) { sys_mprotect((void *)0x7fff8000, 0x10000, PROT_READ); } - __asan_install_malloc_hooks(); STRACE(" _ ____ _ _ _ "); STRACE(" / \\ / ___| / \\ | \\ | |"); STRACE(" / _ \\ \\___ \\ / _ \\ | \\| |"); @@ -1496,4 +1133,5 @@ void __asan_init(int argc, char **argv, char **envp, unsigned long *auxv) { __weak_reference(__asan_poison, __asan_poison_memory_region); __weak_reference(__asan_unpoison, __asan_unpoison_memory_region); +#endif /* __SANITIZE_ADDRESS__ */ #endif /* __x86_64__ */ diff --git a/libc/intrin/asan.internal.h b/libc/intrin/asan.internal.h index a146b8999..d2fea114d 100644 --- a/libc/intrin/asan.internal.h +++ b/libc/intrin/asan.internal.h @@ -3,10 +3,33 @@ #include "libc/calls/struct/iovec.h" #include "libc/intrin/asancodes.h" #include "libc/macros.internal.h" +#include "libc/nexgen32e/stackframe.h" COSMOPOLITAN_C_START_ +#ifdef MODE_DBG +// MODE=dbg +// O(32mb) of morgue memory +// Θ(64) bytes of malloc overhead +#define ASAN_MORGUE_ITEMS 512 +#define ASAN_MORGUE_THRESHOLD 65536 +#define ASAN_TRACE_ITEMS 16 +#else +// MODE=asan +// O(32mb) of morgue memory +// Θ(32) bytes of malloc overhead +#define ASAN_MORGUE_ITEMS 512 +#define ASAN_MORGUE_THRESHOLD 65536 +#define ASAN_TRACE_ITEMS 4 +#endif + #define SHADOW(x) ((signed char *)(((intptr_t)(x) >> kAsanScale) + kAsanMagic)) -#define UNSHADOW(x) ((void *)(MAX(0, (intptr_t)(x)-kAsanMagic) << kAsanScale)) +#define UNSHADOW(x) ((void *)(MAX(0, (intptr_t)(x) - kAsanMagic) << kAsanScale)) + +#define __asan_unreachable() \ + do { \ + kprintf("%s:%d: __asan_unreachable()\n", __FILE__, __LINE__); \ + __builtin_trap(); \ + } while (0) typedef void __asan_die_f(void); @@ -15,6 +38,10 @@ struct AsanFault { const signed char *shadow; }; +struct AsanTrace { + uint32_t p[ASAN_TRACE_ITEMS]; // assumes linkage into 32-bit space +}; + void __asan_unpoison(void *, long); void __asan_poison(void *, long, signed char); void __asan_verify(const void *, size_t); @@ -27,19 +54,17 @@ bool __asan_is_valid_iov(const struct iovec *, int) nosideeffect; struct AsanFault __asan_check(const void *, long) nosideeffect; struct AsanFault __asan_check_str(const char *) nosideeffect; -void __asan_free(void *); -void *__asan_malloc(size_t); +bool __asan_is_mapped(int); int __asan_is_leaky(void *); -int __asan_malloc_trim(size_t); int __asan_print_trace(void *); -void *__asan_calloc(size_t, size_t); -void *__asan_realloc(void *, size_t); -void *__asan_memalign(size_t, size_t); -size_t __asan_get_heap_size(const void *); -void *__asan_realloc_in_place(void *, size_t); - +__asan_die_f *__asan_die(void) __wur; void __asan_memset(void *, char, size_t); +size_t __asan_get_heap_size(const void *); void *__asan_memcpy(void *, const void *, size_t); +void __asan_rawtrace(struct AsanTrace *, const struct StackFrame *); +void __asan_report_memory_origin(const unsigned char *, int, signed char); +void __asan_report_memory_origin_image(intptr_t, int); +void __asan_report_memory_origin_heap(const unsigned char *, int); COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_INTRIN_ASAN_H_ */ diff --git a/libc/intrin/asaninit.S b/libc/intrin/asaninit.S index 6b05a74ea..aaa893964 100644 --- a/libc/intrin/asaninit.S +++ b/libc/intrin/asaninit.S @@ -25,6 +25,7 @@ mov %r13,%rsi mov %r14,%rdx mov %r15,%rcx + .weak __asan_init call __asan_init pop %rsi pop %rdi 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/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/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/demangle.c b/libc/intrin/demangle.c new file mode 100644 index 000000000..ad21c1eb1 --- /dev/null +++ b/libc/intrin/demangle.c @@ -0,0 +1,4418 @@ +/*-*- 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) 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 │ +│ modification, are permitted provided that the following conditions │ +│ are met: │ +│ 1. Redistributions of source code must retain the above copyright │ +│ notice, this list of conditions and the following disclaimer │ +│ in this position and unchanged. │ +│ 2. Redistributions in binary form must reproduce the above copyright │ +│ notice, this list of conditions and the following disclaimer in the │ +│ documentation and/or other materials provided with the distribution. │ +│ │ +│ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR │ +│ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES │ +│ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. │ +│ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, │ +│ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT │ +│ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, │ +│ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY │ +│ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT │ +│ (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 +#include +#include +#include + +__notice(demangle_notice, "\ +Cosmopolitan libelftc 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 + +/** + * @file demangle.c + * @brief Decode IA-64 C++ ABI style implementation. + * + * See the following IA-64 standard ABI(Itanium C++ ABI) references: + * + * - http://www.codesourcery.com/cxx-abi/abi.html#mangling + * - http://www.codesourcery.com/cxx-abi/abi-mangling.html + * + * This file has been forked and modified by Cosmopolitan Libc. We found + * it in the FreeBSD codebase, who got it from libcxxrt, who got it from + * libelftc on SourceForge. Here's what we changed: + * + * - We fixed a memory corruption bug (since upstreamed to libcxxrt) + * + * - We ensured slightly better conformance to libcxxabi test suites. + * + * - We renovated this module to not use malloc(). Our modified version + * uses a new __demangle() API we defined with an strlcpy()-style. The + * output buffer provided by the caller is used internally as a heap. + * + * - This is now the only C++ demangler that's asynchronous signal safe. + * You now have the power to print C++ backtraces from signal handlers + * without needing to block signals, because this code is reentrant, + * and 100% lockless, and uses absolutely no writable static memory. + * That makes it also great for kernel and embedded development. + * + * - We made it go 2x faster. It's almost as fast as libcxxabi now. The + * lightweight Dennis Ritchie style demangle_malloc() implementation + * helped. What also helped is introducing stack_str and strlcpy(). + * + * - We made it use 3x less memory. This came with the tradeoff of + * imposing limitations similar to embedded software. Rather than + * using pointers, we use 16-bit indexes into a heap that can grow no + * larger than 64kb. Please note that a buffer size of 20kb is more + * than sufficient to pass all the libcxxabi test cases. + * + * - We made it have zero dependencies. If you compile this file with + * GCC -ffreestanding flag then it won't link a single libc function. + * Using heavyweight libc strings library functions doesn't make any + * sense for a C++ demangler, which wokrs on strings a few chars long. + * + * - The floating point support is disabled by default, but it can be + * re-enabled by commenting out `DEMANGLE_NO_FLOATING_POINT`. Although + * Doing this will undermine the kernel / signal safety guarantees. + * + * Linking this demangler introduces at least 20kb of binary footprint. + * + */ + +#define DEMANGLE_NO_FLOATING_POINT + +#define ASSERT(x) (void)0 + +#define BUFFER_GROWFACTOR 2 +#define BUFFER_GROW(x) (((x) + 1) * BUFFER_GROWFACTOR) + +#define ELFTC_FAILURE 0 +#define ELFTC_ISDIGIT(C) ('0' <= (C) && (C) <= '9') +#define ELFTC_SUCCESS 1 + +#define VECTOR_DEF_CAPACITY 1 + +typedef unsigned short index_t; + +struct stack_str { + char *str; + int len; + int cap; + char buf[128]; +}; + +struct vector_str { + int size; + int capacity; + index_t *container; +}; + +enum type_qualifier { + TYPE_PTR, + TYPE_REF, + TYPE_CMX, + TYPE_IMG, + TYPE_EXT, + TYPE_RST, + TYPE_VAT, + TYPE_CST, + TYPE_VEC, + TYPE_RREF +}; + +struct vector_type_qualifier { + int size, capacity; + enum type_qualifier *q_container; + struct vector_str ext_name; +}; + +enum read_cmd { + READ_FAIL, + READ_NEST, + READ_TMPL, + READ_EXPR, + READ_EXPL, + READ_LOCAL, + READ_TYPE, + READ_FUNC, + READ_PTRMEM +}; + +struct read_cmd_item { + enum read_cmd cmd; + void *data; +}; + +struct vector_read_cmd { + int size, capacity; + struct read_cmd_item *r_container; +}; + +enum push_qualifier { + PUSH_ALL_QUALIFIER, + PUSH_CV_QUALIFIER, + PUSH_NON_CV_QUALIFIER, +}; + +struct demangle_data { + int hoff; + index_t free; + uintptr_t heap; + 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 */ + bool is_guard_variable; /* guarden varis */ + 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 */ + intptr_t jmpbuf[5]; +}; + +struct type_delimit { + bool paren; + bool firstp; +}; + +#define 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) demangle_push_str((d), (s), demangle_strlen(s)) +#define VEC_PUSH_STR(d, s) \ + demangle_vector_str_push(ddata, (d), (s), demangle_strlen(s)) +#define VEC_STR(d, v, i) ((char *)((d)->heap + (v)->container[i])) + +static int demangle_read_encoding(struct demangle_data *); +static int demangle_read_expr_primary(struct demangle_data *); +static int demangle_read_expression(struct demangle_data *); +static int demangle_read_function(struct demangle_data *, int *, + struct vector_type_qualifier *); +static int demangle_read_name(struct demangle_data *); +static int demangle_read_name_flat(struct demangle_data *, char **); +static int demangle_read_sname(struct demangle_data *); +static int demangle_read_subst(struct demangle_data *); +static int demangle_read_type(struct demangle_data *, struct type_delimit *); + +static privileged size_t +demangle_strlen(const char *s) +{ + size_t n = 0; + while (*s++) + ++n; + return n; +} + +static privileged char * +demangle_stpcpy(char *d, const char *s) +{ + size_t i = 0; + for (;;) { + if (!(d[i] = s[i])) + return d + i; + ++i; + } +} + +static privileged void * +demangle_mempcpy(void *a, const void *b, size_t n) +{ + char *d = a; + const char *s = b; + while (n--) + *d++ = *s++; + return d; +} + +static privileged void * +demangle_memcpy(void *a, const void *b, size_t n) +{ + demangle_mempcpy(a, b, n); + return a; +} + +static privileged int +demangle_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; + return (a[i] & 0xff) - (b[i] & 0xff); +} + +static privileged int +demangle_memcmp(const void *a, const void *b, size_t n) +{ + int c; + const unsigned char *p, *q; + if ((p = a) == (q = b) || !n) + return 0; + if ((c = *p - *q)) + return c; + for (; n; ++p, ++q, --n) + if ((c = *p - *q)) + return c; + return 0; +} + +static privileged void +demangle_strlcpy(char *dst, const char *src, size_t dsize) +{ + size_t remain; + if ((remain = dsize)) + while (--remain) + if (!(*dst++ = *src++)) + break; + if (!remain && dsize) + *dst = 0; +} + +static privileged long +demangle_strtol(const char *s, int base) +{ + static const uint8_t demangle_base36[80] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 0, 0, 0, 0, 0, 0, 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 0, 0, 0, 0, 0, 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 0, + 0, 0, 0, 0 }; + int c; + long x = 0; + while ((c = *s++ & 255) < 128 && c - '0' >= 0 && + (c = demangle_base36[c - '0']) && --c < base) + x = x * base + c; + return x; +} + +static privileged char * +demangle_strstr(const char *haystack, const char *needle) +{ + size_t i; + 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 (!*haystack++) + break; + } + return 0; +} + +static privileged char * +demangle_utoa(char *p, unsigned long long x) +{ + char t; + size_t i, a, b; + i = 0; + do { + p[i++] = x % 10 + '0'; + x = x / 10; + } while (x > 0); + p[i] = '\0'; + if (i) { + for (a = 0, b = i - 1; a < b; ++a, --b) { + t = p[a]; + p[a] = p[b]; + p[b] = t; + } + } + return p + i; +} + +static privileged char * +demangle_itoa(char *p, long long x) +{ + if (x < 0) + *p++ = '-', x = -(unsigned long long)x; + return demangle_utoa(p, x); +} + +static privileged void +demangle_free(struct demangle_data *h, void *ptr) +{ + index_t base; + uintptr_t mem; + if (ptr) { + mem = (uintptr_t)ptr; + base = mem - h->heap; + if (base - sizeof(index_t) == h->hoff) { + h->hoff += ((index_t *)mem)[-1]; + } else { + *(index_t *)mem = h->free; + h->free = base; + } + } +} + +static privileged returnspointerwithnoaliases returnsnonnull void * +demangle_malloc(struct demangle_data *h, int a, int n) +{ + int rem; + uintptr_t ptr; + index_t next, next2; + index_t *link, *link2; + int b = sizeof(index_t); + + /* Roundup size. */ + n += a - 1; + n &= -a; + n += b - 1; + n &= -b; + + /* Try free list. */ + next = h->free; + link = &h->free; + while (next) { + link2 = (index_t *)(h->heap + next); + next2 = *link2; + if (!(next & (a - 1)) && (rem = link2[-1] - n) >= 0) { + if (rem < (b << 1)) { + *link = next2; + } else { + /* Split chunk. */ + link2[-1] = n; + *link = next + n + b; + link = (index_t *)(h->heap + next + n + b); + link[-1] = rem - b; + link[0] = next2; + } + return link2; + } + next = next2; + link = link2; + } + + /* Allocate new memory. */ + rem = h->hoff; + h->hoff -= n; + h->hoff &= -a; + h->hoff &= -b; + if (h->hoff >= (b << 1)) { + n = rem - h->hoff; + ptr = h->heap + h->hoff; + h->hoff -= b; + ((index_t *)ptr)[-1] = n; + return (void *)ptr; + } else { + __builtin_longjmp(h->jmpbuf, 1); + } +} + +static privileged returnspointerwithnoaliases char * +demangle_strdup(struct demangle_data *h, const char *s) +{ + char *d = 0; + if (s) { + size_t n = demangle_strlen(s) + 1; + d = (char *)demangle_malloc(h, 1, n); + demangle_memcpy(d, s, n); + } + return d; +} + +static privileged void +demangle_vector_str_dest(struct demangle_data *h, struct vector_str *v) +{ + int i; + for (i = 0; i < v->size; ++i) + demangle_free(h, VEC_STR(h, v, v->size - i - 1)); + demangle_free(h, v->container); +} + +static privileged void +demangle_vector_type_qualifier_dest(struct demangle_data *d, + struct vector_type_qualifier *v) +{ + demangle_free(d, v->q_container); + demangle_vector_str_dest(d, &v->ext_name); +} + +static privileged void +demangle_stack_str_init(struct stack_str *ss) +{ + ss->str = ss->buf; + ss->buf[0] = 0; + ss->len = 0; + ss->cap = sizeof(ss->buf); +} + +static privileged void +demangle_stack_str_append(struct 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); + str2 = (char *)demangle_malloc(h, 1, cap2); + demangle_memcpy(str2, ss->str, ss->len); + ss->str = str2; + ss->cap = cap2; + } + demangle_memcpy(ss->str + ss->len, str, len); + ss->str[len2] = 0; + ss->len = len2; +} + +#define demangle_stack_str_append_str(h, ss, s) \ + demangle_stack_str_append(h, ss, s, demangle_strlen(s)) + +static privileged size_t +demangle_get_strlen_sum(struct demangle_data *h, const struct vector_str *v) +{ + size_t i, len = 0; + ASSERT(v->size > 0); + for (i = 0; i < v->size; ++i) + len += demangle_strlen(VEC_STR(h, v, i)); + return len; +} + +static privileged int +demangle_demangle_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; + return (a[i] & 0xff) - (b[i] & 0xff); +} + +/** + * @brief Find string in vector_str. + * @param v Destination vector. + * @param o String to find. + * @param l Length of the string. + * @return -1 at failed, 0 at not found, 1 at found. + */ +static privileged int +demangle_vector_str_find(struct demangle_data *h, const struct vector_str *v, + const char *o, size_t l) +{ + size_t i; + + if (!o) + return -1; + + for (i = 0; i < v->size; ++i) + if (!demangle_demangle_strncmp(VEC_STR(h, v, i), o, l)) + return 1; + + return 0; +} + +/** + * @brief Get new allocated flat string from vector. + * + * If l is not NULL, return length of the string. + * @param v Destination vector. + * @param l Length of the string. + * @return NULL at failed or NUL terminated new allocated string. + */ +static privileged char * +demangle_vector_str_get_flat(struct demangle_data *ddata, + const struct vector_str *v, size_t *l) +{ + size_t i; + char *rtn, *p; + size_t rtn_size; + + if (!v->size) + return 0; + + if (!(rtn_size = demangle_get_strlen_sum(ddata, v))) + return 0; + + rtn = (char *)demangle_malloc(ddata, 1, rtn_size + 1); + + p = rtn; + for (i = 0; i < v->size; ++i) + p = demangle_stpcpy(p, VEC_STR(ddata, v, i)); + + if (l) + *l = rtn_size; + + return rtn; +} + +static privileged void +demangle_vector_str_grow(struct demangle_data *ddata, struct vector_str *v) +{ + size_t i, tmp_cap; + index_t *tmp_ctn; + + ASSERT(v->capacity > 0); + + tmp_cap = BUFFER_GROW(v->capacity); + + ASSERT(tmp_cap > v->capacity); + + tmp_ctn = (index_t *)demangle_malloc(ddata, alignof(index_t), + sizeof(index_t) * tmp_cap); + + for (i = 0; i < v->size; ++i) + tmp_ctn[i] = v->container[i]; + + demangle_free(ddata, v->container); + + v->container = tmp_ctn; + v->capacity = tmp_cap; +} + +/** + * @brief Initialize vector_str. + * @return false at failed, true at success. + */ +static privileged void +demangle_vector_str_init(struct demangle_data *ddata, struct vector_str *v) +{ + v->size = 0; + v->capacity = VECTOR_DEF_CAPACITY; + + ASSERT(v->capacity > 0); + + v->container = (index_t *)demangle_malloc(ddata, alignof(index_t), + sizeof(index_t) * v->capacity); +} + +/** + * @brief Remove last element in vector_str. + * @return false at failed, true at success. + */ +static privileged bool +demangle_vector_str_pop(struct vector_str *v) +{ + if (!v) + return false; + + if (!v->size) + return true; + + --v->size; + + v->container[v->size] = 0; + + return true; +} + +/** + * @brief Push back string to vector. + * @return false at failed, true at success. + */ +static privileged bool +demangle_vector_str_push(struct demangle_data *ddata, struct vector_str *v, + const char *str, size_t len) +{ + if (!v || !str) + return false; + + if (v->size == v->capacity) + demangle_vector_str_grow(ddata, v); + + v->container[v->size] = (uintptr_t)demangle_malloc(ddata, 1, len + 1) - + ddata->heap; + + demangle_strlcpy(VEC_STR(ddata, v, v->size), str, len + 1); + + ++v->size; + + return true; +} + +/** + * @brief Push front org vector to det vector. + * @return false at failed, true at success. + */ +static privileged bool +demangle_vector_str_push_vector_head(struct demangle_data *ddata, + struct vector_str *dst, struct vector_str *org) +{ + size_t i, tmp_cap; + index_t *tmp_ctn; + + tmp_cap = BUFFER_GROW(dst->size + org->size); + + tmp_ctn = (index_t *)demangle_malloc(ddata, alignof(index_t), + sizeof(index_t) * tmp_cap); + + for (i = 0; i < org->size; ++i) + tmp_ctn[i] = (uintptr_t)demangle_strdup(ddata, + VEC_STR(ddata, org, i)) - + ddata->heap; + + for (i = 0; i < dst->size; ++i) + tmp_ctn[i + org->size] = dst->container[i]; + + demangle_free(ddata, dst->container); + + dst->container = tmp_ctn; + dst->capacity = tmp_cap; + dst->size += org->size; + + return true; +} + +/** + * @brief Push org vector to the tail of det vector. + * @return false at failed, true at success. + */ +static privileged bool +demangle_vector_str_push_vector(struct demangle_data *ddata, + struct vector_str *dst, struct vector_str *org) +{ + size_t i, tmp_cap; + index_t *tmp_ctn; + + if (!dst || !org) + return false; + + tmp_cap = BUFFER_GROW(dst->size + org->size); + + tmp_ctn = (index_t *)demangle_malloc(ddata, alignof(index_t), + sizeof(index_t) * tmp_cap); + + for (i = 0; i < dst->size; ++i) + tmp_ctn[i] = dst->container[i]; + + for (i = 0; i < org->size; ++i) + tmp_ctn[i + dst->size] = (uintptr_t)demangle_strdup(ddata, + VEC_STR(ddata, org, i)) - + ddata->heap; + + demangle_free(ddata, dst->container); + + dst->container = tmp_ctn; + dst->capacity = tmp_cap; + dst->size += org->size; + + return true; +} + +/** + * @brief Get new allocated flat string from vector between begin and end. + * + * If r_len is not NULL, string length will be returned. + * @return NULL at failed or NUL terminated new allocated string. + */ +static privileged returnspointerwithnoaliases char * +demangle_vector_str_substr(struct demangle_data *ddata, + const struct vector_str *v, size_t begin, size_t end, size_t *r_len) +{ + char *rtn, *p; + size_t i, len; + + if (!v || begin > end) + return 0; + + len = 0; + for (i = begin; i < end + 1; ++i) + len += demangle_strlen(VEC_STR(ddata, v, i)); + + rtn = (char *)demangle_malloc(ddata, 1, len + 1); + + if (r_len) + *r_len = len; + + p = rtn; + for (i = begin; i < end + 1; ++i) + p = demangle_stpcpy(p, VEC_STR(ddata, v, i)); + + return rtn; +} + +static privileged int +demangle_vector_read_cmd_pop(struct vector_read_cmd *v) +{ + if (!v->size) + return 0; + + --v->size; + v->r_container[v->size].cmd = READ_FAIL; + v->r_container[v->size].data = NULL; + + return 1; +} + +static privileged void +demangle_vector_read_cmd_init(struct demangle_data *ddata, + struct vector_read_cmd *v) +{ + v->size = 0; + v->capacity = VECTOR_DEF_CAPACITY; + + v->r_container = (struct read_cmd_item *)demangle_malloc(ddata, + alignof(*v->r_container), sizeof(*v->r_container) * v->capacity); +} + +static privileged void +demangle_data_init(struct demangle_data *d, const char *cur) +{ + demangle_vector_str_init(d, &d->output); + demangle_vector_str_init(d, &d->subst); + demangle_vector_str_init(d, &d->tmpl); + demangle_vector_str_init(d, &d->class_type); + demangle_vector_read_cmd_init(d, &d->cmd); + + 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; + d->mem_cst = false; + d->mem_ref = false; + d->mem_rref = false; + d->is_tmpl = false; + d->is_functype = false; + d->ref_qualifier = false; + d->is_guard_variable = false; + d->push_qualifier = PUSH_ALL_QUALIFIER; + d->func_type = 0; + d->cur = cur; + d->cur_output = &d->output; + d->last_sname = NULL; +} + +static privileged int +demangle_push_str(struct demangle_data *ddata, const char *str, size_t len) +{ + if (!str || !len) + return 0; + + /* + * is_tmpl is used to check if the type (function arg) is right next + * to template args, and should always be cleared whenever new string + * pushed. + */ + ddata->is_tmpl = false; + + return demangle_vector_str_push(ddata, ddata->cur_output, str, len); +} + +#ifndef DEMANGLE_NO_FLOATING_POINT +static privileged int +demangle_push_fp(struct demangle_data *ddata, + char *decoder(struct demangle_data *, const char *, size_t)) +{ + size_t len; + int rtn; + const char *fp; + char *f; + + if (!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 = demangle_strlen(f)) > 0) + rtn = demangle_push_str(ddata, f, len); + + ++ddata->cur; + + return rtn; +} +#endif // DEMANGLE_NO_FLOATING_POINT + +static privileged int +demangle_pop_str(struct demangle_data *ddata) +{ + return demangle_vector_str_pop(ddata->cur_output); +} + +static privileged int +demangle_push_subst(struct demangle_data *ddata, const char *str, size_t len) +{ + if (!str || !len) + return 0; + + if (!demangle_vector_str_find(ddata, &ddata->subst, str, len)) + return demangle_vector_str_push(ddata, &ddata->subst, str, len); + + return 1; +} + +static privileged int +demangle_push_subst_v(struct demangle_data *ddata, struct vector_str *v) +{ + int rtn; + char *str; + size_t str_len; + + if (!v) + return 0; + + if (!(str = demangle_vector_str_get_flat(ddata, v, &str_len))) + return 0; + + rtn = demangle_push_subst(ddata, str, str_len); + + demangle_free(ddata, str); + + return rtn; +} + +static privileged int +demangle_push_type_qualifier(struct demangle_data *ddata, + struct vector_type_qualifier *v, const char *type_str) +{ + struct stack_str subst_v; + enum type_qualifier t; + size_t idx, e_idx, e_len; + char *buf; + bool cv; + + if (!v) + return 0; + + if (!(idx = v->size)) + return 1; + + if (type_str) { + demangle_stack_str_init(&subst_v); + demangle_stack_str_append_str(ddata, &subst_v, type_str); + } + + cv = true; + e_idx = 0; + while (idx > 0) { + switch (v->q_container[idx - 1]) { + case TYPE_PTR: + cv = false; + if (ddata->push_qualifier == PUSH_CV_QUALIFIER) + break; + if (!DEM_PUSH_STR(ddata, "*")) + return 0; + if (type_str) { + demangle_stack_str_append_str(ddata, &subst_v, + "*"); + if (!demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; + } + break; + + case TYPE_REF: + cv = false; + if (ddata->push_qualifier == PUSH_CV_QUALIFIER) + break; + if (!DEM_PUSH_STR(ddata, "&")) + return 0; + if (type_str) { + demangle_stack_str_append_str(ddata, &subst_v, + "&"); + if (!demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; + } + break; + + case TYPE_RREF: + cv = false; + if (ddata->push_qualifier == PUSH_CV_QUALIFIER) + break; + if (!DEM_PUSH_STR(ddata, "&&")) + return 0; + if (type_str) { + demangle_stack_str_append_str(ddata, &subst_v, + "&&"); + if (!demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; + } + break; + + case TYPE_CMX: + cv = false; + if (ddata->push_qualifier == PUSH_CV_QUALIFIER) + break; + if (!DEM_PUSH_STR(ddata, " complex")) + return 0; + if (type_str) { + demangle_stack_str_append_str(ddata, &subst_v, + " complex"); + if (!demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; + } + break; + + case TYPE_IMG: + cv = false; + if (ddata->push_qualifier == PUSH_CV_QUALIFIER) + break; + if (!DEM_PUSH_STR(ddata, " imaginary")) + return 0; + if (type_str) { + demangle_stack_str_append_str(ddata, &subst_v, + " imaginary"); + if (!demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; + } + break; + + case TYPE_EXT: + cv = false; + if (ddata->push_qualifier == PUSH_CV_QUALIFIER) + break; + if (!v->ext_name.size || e_idx > v->ext_name.size - 1) + return 0; + if (!(e_len = demangle_strlen( + VEC_STR(ddata, (&v->ext_name), e_idx)))) + return 0; + buf = (char *)demangle_malloc(ddata, 1, e_len + 2); + buf[0] = ' '; + demangle_memcpy(buf + 1, + VEC_STR(ddata, &v->ext_name, e_idx), e_len + 1); + + if (!DEM_PUSH_STR(ddata, buf)) + return 0; + + if (type_str) { + demangle_stack_str_append_str(ddata, &subst_v, + buf); + if (!demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; + } + ++e_idx; + break; + + case TYPE_RST: + if (ddata->push_qualifier == PUSH_NON_CV_QUALIFIER && + cv) + break; + if (ddata->push_qualifier == PUSH_CV_QUALIFIER && !cv) + break; + if (!DEM_PUSH_STR(ddata, " restrict")) + return 0; + if (type_str) { + demangle_stack_str_append_str(ddata, &subst_v, + " restrict"); + if (idx - 1 > 0) { + t = v->q_container[idx - 2]; + if (t == TYPE_RST || t == TYPE_VAT || + t == TYPE_CST) + break; + } + if (!demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; + } + break; + + case TYPE_VAT: + if (ddata->push_qualifier == PUSH_NON_CV_QUALIFIER && + cv) + break; + if (ddata->push_qualifier == PUSH_CV_QUALIFIER && !cv) + break; + if (!DEM_PUSH_STR(ddata, " volatile")) + return 0; + if (type_str) { + demangle_stack_str_append_str(ddata, &subst_v, + " volatile"); + if (idx - 1 > 0) { + t = v->q_container[idx - 2]; + if (t == TYPE_RST || t == TYPE_VAT || + t == TYPE_CST) + break; + } + if (!demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; + } + break; + + case TYPE_CST: + if (ddata->push_qualifier == PUSH_NON_CV_QUALIFIER && + cv && !ddata->is_functype) { /* [jart] upstream */ + break; + } + if (ddata->push_qualifier == PUSH_CV_QUALIFIER && !cv) { + break; + } + if (!DEM_PUSH_STR(ddata, " const")) + return 0; + if (type_str) { + demangle_stack_str_append_str(ddata, &subst_v, + " const"); + if (idx - 1 > 0) { + t = v->q_container[idx - 2]; + if (t == TYPE_RST || t == TYPE_VAT || + t == TYPE_CST) + break; + } + if (!demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; + } + break; + + case TYPE_VEC: { + char *p; + cv = false; + if (ddata->push_qualifier == PUSH_CV_QUALIFIER) + break; + if (!v->ext_name.size || e_idx > v->ext_name.size - 1) + return 0; + if (!(e_len = demangle_strlen( + VEC_STR(ddata, &v->ext_name, e_idx)))) + return 0; + buf = (char *)demangle_malloc(ddata, 1, e_len + 12); + p = buf; + p = demangle_stpcpy(p, " __vector("); + p = (char *)demangle_mempcpy(p, + VEC_STR(ddata, &v->ext_name, e_idx), e_len); + p = demangle_stpcpy(p, ")"); + if (!DEM_PUSH_STR(ddata, buf)) + return 0; + if (type_str) { + demangle_stack_str_append_str(ddata, &subst_v, + buf); + if (!demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; + } + ++e_idx; + break; + } + } + --idx; + } + + return 1; +} + +static privileged int +demangle_get_subst(struct demangle_data *ddata, size_t idx) +{ + size_t len; + + if (ddata->subst.size <= idx) + return 0; + if (!(len = demangle_strlen(VEC_STR(ddata, &ddata->subst, idx)))) + return 0; + if (!demangle_push_str(ddata, VEC_STR(ddata, &ddata->subst, idx), len)) + return 0; + + /* skip '_' */ + ++ddata->cur; + + return 1; +} + +static privileged int +demangle_get_tmpl_param(struct demangle_data *ddata, size_t idx) +{ + size_t len; + + if (ddata->tmpl.size <= idx) + return 0; + if (!(len = demangle_strlen(VEC_STR(ddata, &ddata->tmpl, idx)))) + return 0; + if (!demangle_push_str(ddata, VEC_STR(ddata, &ddata->tmpl, idx), len)) + return 0; + + ++ddata->cur; + + return 1; +} + +static privileged int +demangle_read_array(struct demangle_data *ddata) +{ + size_t i, num_len, exp_len, p_idx, idx; + const char *num; + char *exp; + + if (!*(++ddata->cur)) + return 0; + + if (*ddata->cur == '_') { + if (!*(++ddata->cur)) + return 0; + + if (!demangle_read_type(ddata, NULL)) + return 0; + + if (!DEM_PUSH_STR(ddata, " []")) + return 0; + } else { + if (ELFTC_ISDIGIT(*ddata->cur)) { + num = ddata->cur; + while (ELFTC_ISDIGIT(*ddata->cur)) + ++ddata->cur; + if (*ddata->cur != '_') + return 0; + num_len = ddata->cur - num; + ASSERT(num_len > 0); + if (*(++ddata->cur) == '\0') + return 0; + if (!demangle_read_type(ddata, NULL)) + return 0; + if (!DEM_PUSH_STR(ddata, " [")) + return 0; + if (!demangle_push_str(ddata, num, num_len)) + return 0; + if (!DEM_PUSH_STR(ddata, "]")) + return 0; + } else { + p_idx = ddata->output.size; + if (!demangle_read_expression(ddata)) + return 0; + if (!(exp = demangle_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 (!demangle_vector_str_pop(&ddata->output)) + return 0; + if (*ddata->cur != '_') + return 0; + ++ddata->cur; + if (*ddata->cur == '\0') + return 0; + if (!demangle_read_type(ddata, NULL)) + return 0; + if (!DEM_PUSH_STR(ddata, " [")) + return 0; + if (!demangle_push_str(ddata, exp, exp_len)) + return 0; + if (!DEM_PUSH_STR(ddata, "]")) + return 0; + } + } + + return 1; +} + +#ifndef DEMANGLE_NO_FLOATING_POINT + +/* Simple hex to integer function used by decode_to_* function. */ +static privileged 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 privileged returnspointerwithnoaliases char * +decode_fp_to_double(struct 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: + rtn = (char *)demangle_malloc(ddata, alignof(char), + sizeof(char) * rtn_len); + + 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 privileged returnspointerwithnoaliases char * +decode_fp_to_float(struct 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: + rtn = (char *)demangle_malloc(ddata, alignof(char), + sizeof(char) * rtn_len); + + 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 privileged returnspointerwithnoaliases char * +decode_fp_to_long_double(struct 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: + rtn = (char *)demangle_malloc(ddata, alignof(char), + sizeof(char) * rtn_len); + + 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 privileged returnspointerwithnoaliases char * +decode_fp_to_float128(struct 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 + demangle_memcpy(&f, buf, FLOAT_EXTENED_BYTES); +#else /* ELFTC_BYTE_ORDER != ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ + demangle_memcpy(&f, buf + 6, FLOAT_EXTENED_BYTES); +#endif /* ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ + + rtn_len = 256; + limit = 0; + again: + rtn = (char *)demangle_malloc(ddata, alignof(char), + sizeof(char) * rtn_len); + + 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 privileged returnspointerwithnoaliases char * +decode_fp_to_float80(struct 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 + demangle_memcpy(&f, buf, FLOAT_EXTENED_BYTES); +#else /* ELFTC_BYTE_ORDER != ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ + demangle_memcpy((unsigned char *)(&f) + 6, buf, + FLOAT_EXTENED_BYTES); +#endif /* ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ + + rtn_len = 256; + limit = 0; + again: + rtn = (char *)demangle_malloc(ddata, alignof(char), + sizeof(char) * rtn_len); + + 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 privileged int +demangle_read_expr_primary(struct demangle_data *ddata) +{ + const char *num; + + if (*(++ddata->cur) == '\0') + return 0; + + if (*ddata->cur == '_' && *(ddata->cur + 1) == 'Z') { + ddata->cur += 2; + if (*ddata->cur == '\0') + return 0; + if (!demangle_read_encoding(ddata)) + return 0; + ++ddata->cur; + return 1; + } + + switch (*ddata->cur) { + case 'b': + if (*(ddata->cur + 2) != 'E') + return 0; + switch (*(++ddata->cur)) { + case '0': + ddata->cur += 2; + return DEM_PUSH_STR(ddata, "false"); + case '1': + ddata->cur += 2; + return DEM_PUSH_STR(ddata, "true"); + default: + return 0; + } + +#ifndef DEMANGLE_NO_FLOATING_POINT + + case 'd': + ++ddata->cur; + return demangle_push_fp(ddata, decode_fp_to_double); + + case 'e': + ++ddata->cur; + if (sizeof(long double) == 10) + return demangle_push_fp(ddata, decode_fp_to_double); + return demangle_push_fp(ddata, decode_fp_to_float80); + + case 'f': + ++ddata->cur; + return demangle_push_fp(ddata, decode_fp_to_float); + + case 'g': + ++ddata->cur; + if (sizeof(long double) == 16) + return demangle_push_fp(ddata, decode_fp_to_double); + return demangle_push_fp(ddata, decode_fp_to_float128); + +#endif // DEMANGLE_NO_FLOATING_POINT + + case 'i': + case 'j': + case 'l': + case 'm': + case 'n': + case 's': + case 't': + case 'x': + case 'y': + if (*(++ddata->cur) == 'n') { + if (!DEM_PUSH_STR(ddata, "-")) + return 0; + ++ddata->cur; + } + num = ddata->cur; + while (*ddata->cur != 'E') { + if (!ELFTC_ISDIGIT(*ddata->cur)) + return 0; + ++ddata->cur; + } + ++ddata->cur; + return demangle_push_str(ddata, num, ddata->cur - num - 1); + + default: + return 0; + } +} + +/* + * 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 privileged int +demangle_local_source_name(struct demangle_data *ddata) +{ + /* L */ + if (*ddata->cur != 'L') + return 0; + ++ddata->cur; + + /* source name */ + if (!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 privileged int +demangle_read_uqname(struct demangle_data *ddata) +{ + size_t len; + + if (*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 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 (!demangle_push_str(ddata, ddata->cur + 1, 1)) + return 0; + ddata->cur += 2; + return 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'): + case SIMPLE_HASH('C', '4'): + case SIMPLE_HASH('C', '5'): + if (!ddata->last_sname) + return 0; + if (!(len = demangle_strlen(ddata->last_sname))) + return 0; + if (!DEM_PUSH_STR(ddata, "::")) + return 0; + if (!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'): + case SIMPLE_HASH('D', '3'): + case SIMPLE_HASH('D', '4'): + case SIMPLE_HASH('D', '5'): + if (!ddata->last_sname) + return 0; + if (!(len = demangle_strlen(ddata->last_sname))) + return 0; + if (!DEM_PUSH_STR(ddata, "::~")) + return 0; + if (!demangle_push_str(ddata, ddata->last_sname, len)) + return 0; + ddata->cur += 2; + return 1; + } + + /* source name */ + if (ELFTC_ISDIGIT(*ddata->cur)) + return demangle_read_sname(ddata); + + /* local source name */ + if (*ddata->cur == 'L') + return demangle_local_source_name(ddata); + + return 1; +} + +/* + * Read template parameter that forms in 'T[number]_'. + * This function much like to read_subst but only for types. + */ +static privileged int +demangle_read_tmpl_param(struct demangle_data *ddata) +{ + long nth; + + if (*ddata->cur != 'T') + return 0; + + ++ddata->cur; + + if (*ddata->cur == '_') { + return demangle_get_tmpl_param(ddata, 0); + } else { + nth = demangle_strtol(ddata->cur, 36); + + /* T_ is first */ + ++nth; + + while (*ddata->cur != '_') + ++ddata->cur; + + ASSERT(nth > 0); + + return demangle_get_tmpl_param(ddata, nth); + } + + /* NOTREACHED */ + return 0; +} + +static privileged int +demangle_vector_read_cmd_push(struct 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); + tmp_r_ctn = (struct read_cmd_item *)demangle_malloc(ddata, + alignof(*tmp_r_ctn), sizeof(*tmp_r_ctn) * tmp_cap); + for (i = 0; i < v->size; ++i) + tmp_r_ctn[i] = v->r_container[i]; + demangle_free(ddata, v->r_container); + 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 privileged int +demangle_read_tmpl_arg(struct demangle_data *ddata) +{ + if (*ddata->cur == '\0') + return 0; + + switch (*ddata->cur) { + case 'L': + return demangle_read_expr_primary(ddata); + case 'X': + ++ddata->cur; + if (!demangle_read_expression(ddata)) + return 0; + return *ddata->cur++ == 'E'; + } + + return demangle_read_type(ddata, NULL); +} + +static privileged int +demangle_read_tmpl_args(struct demangle_data *ddata) +{ + struct vector_str *v; + size_t arg_len, idx, limit; + char *arg; + + if (*ddata->cur == '\0') + return 0; + + ++ddata->cur; + + if (!demangle_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 (!demangle_read_tmpl_arg(ddata)) + return 0; + if (!(arg = demangle_vector_str_substr(ddata, v, idx, + v->size - 1, &arg_len))) + return 0; + if (!demangle_vector_str_find(ddata, &ddata->tmpl, arg, + arg_len) && + !demangle_vector_str_push(ddata, &ddata->tmpl, arg, + arg_len)) { + demangle_free(ddata, arg); + return 0; + } + + demangle_free(ddata, arg); + + 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++ > DEMANGLE_TRY_LIMIT) + return 0; + } + + return demangle_vector_read_cmd_pop(&ddata->cmd); +} + +static privileged int +demangle_read_expression_trinary(struct demangle_data *ddata, const char *name1, + size_t len1, const char *name2, size_t len2) +{ + if (!name1 || !len1 || !name2 || !len2) + return 0; + + if (!demangle_read_expression(ddata)) + return 0; + if (!demangle_push_str(ddata, name1, len1)) + return 0; + if (!demangle_read_expression(ddata)) + return 0; + if (!demangle_push_str(ddata, name2, len2)) + return 0; + + return demangle_read_expression(ddata); +} + +static privileged int +demangle_read_expression_unary(struct demangle_data *ddata, const char *name, + size_t len) +{ + if (!name || !len) + return 0; + if (!demangle_read_expression(ddata)) + return 0; + + return demangle_push_str(ddata, name, len); +} + +static privileged int +demangle_read_expression_binary(struct demangle_data *ddata, const char *name, + size_t len) +{ + if (!name || !len) + return 0; + if (!demangle_read_expression(ddata)) + return 0; + if (!demangle_push_str(ddata, name, len)) + return 0; + + return demangle_read_expression(ddata); +} + +static privileged int +demangle_read_expression(struct demangle_data *ddata) +{ + if (*ddata->cur == '\0') + return 0; + + switch (SIMPLE_HASH(*ddata->cur, *(ddata->cur + 1))) { + case SIMPLE_HASH('s', 't'): + ddata->cur += 2; + return demangle_read_type(ddata, NULL); + + case SIMPLE_HASH('s', 'r'): + ddata->cur += 2; + if (!demangle_read_type(ddata, NULL)) + return 0; + if (!demangle_read_uqname(ddata)) + return 0; + if (*ddata->cur == 'I') + return demangle_read_tmpl_args(ddata); + return 1; + + case SIMPLE_HASH('a', 'a'): + /* operator && */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "&&", 2); + + case SIMPLE_HASH('a', 'd'): + /* operator & (unary) */ + ddata->cur += 2; + return demangle_read_expression_unary(ddata, "&", 1); + + case SIMPLE_HASH('a', 'n'): + /* operator & */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "&", 1); + + case SIMPLE_HASH('a', 'N'): + /* operator &= */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "&=", 2); + + case SIMPLE_HASH('a', 'S'): + /* operator = */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "=", 1); + + case SIMPLE_HASH('c', 'l'): + /* operator () */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "()", 2); + + case SIMPLE_HASH('c', 'm'): + /* operator , */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, ",", 1); + + case SIMPLE_HASH('c', 'o'): + /* operator ~ */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "~", 1); + + case SIMPLE_HASH('c', 'v'): + /* operator (cast) */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "(cast)", 6); + + case SIMPLE_HASH('d', 'a'): + /* operator delete [] */ + ddata->cur += 2; + return demangle_read_expression_unary(ddata, "delete []", 9); + + case SIMPLE_HASH('d', 'e'): + /* operator * (unary) */ + ddata->cur += 2; + return demangle_read_expression_unary(ddata, "*", 1); + + case SIMPLE_HASH('d', 'l'): + /* operator delete */ + ddata->cur += 2; + return demangle_read_expression_unary(ddata, "delete", 6); + + case SIMPLE_HASH('d', 'v'): + /* operator / */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "/", 1); + + case SIMPLE_HASH('d', 'V'): + /* operator /= */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "/=", 2); + + case SIMPLE_HASH('e', 'o'): + /* operator ^ */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "^", 1); + + case SIMPLE_HASH('e', 'O'): + /* operator ^= */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "^=", 2); + + case SIMPLE_HASH('e', 'q'): + /* operator == */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "==", 2); + + case SIMPLE_HASH('g', 'e'): + /* operator >= */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, ">=", 2); + + case SIMPLE_HASH('g', 't'): + /* operator > */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, ">", 1); + + case SIMPLE_HASH('i', 'x'): + /* operator [] */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "[]", 2); + + case SIMPLE_HASH('l', 'e'): + /* operator <= */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "<=", 2); + + case SIMPLE_HASH('l', 's'): + /* operator << */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "<<", 2); + + case SIMPLE_HASH('l', 'S'): + /* operator <<= */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "<<=", 3); + + case SIMPLE_HASH('l', 't'): + /* operator < */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "<", 1); + + case SIMPLE_HASH('m', 'i'): + /* operator - */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "-", 1); + + case SIMPLE_HASH('m', 'I'): + /* operator -= */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "-=", 2); + + case SIMPLE_HASH('m', 'l'): + /* operator * */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "*", 1); + + case SIMPLE_HASH('m', 'L'): + /* operator *= */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "*=", 2); + + case SIMPLE_HASH('m', 'm'): + /* operator -- */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "--", 2); + + case SIMPLE_HASH('n', 'a'): + /* operator new[] */ + ddata->cur += 2; + return demangle_read_expression_unary(ddata, "new []", 6); + + case SIMPLE_HASH('n', 'e'): + /* operator != */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "!=", 2); + + case SIMPLE_HASH('n', 'g'): + /* operator - (unary) */ + ddata->cur += 2; + return demangle_read_expression_unary(ddata, "-", 1); + + case SIMPLE_HASH('n', 't'): + /* operator ! */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "!", 1); + + case SIMPLE_HASH('n', 'w'): + /* operator new */ + ddata->cur += 2; + return demangle_read_expression_unary(ddata, "new", 3); + + case SIMPLE_HASH('o', 'o'): + /* operator || */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "||", 2); + + case SIMPLE_HASH('o', 'r'): + /* operator | */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "|", 1); + + case SIMPLE_HASH('o', 'R'): + /* operator |= */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "|=", 2); + + case SIMPLE_HASH('p', 'l'): + /* operator + */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "+", 1); + + case SIMPLE_HASH('p', 'L'): + /* operator += */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "+=", 2); + + case SIMPLE_HASH('p', 'm'): + /* operator ->* */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "->*", 3); + + case SIMPLE_HASH('p', 'p'): + /* operator ++ */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "++", 2); + + case SIMPLE_HASH('p', 's'): + /* operator + (unary) */ + ddata->cur += 2; + return demangle_read_expression_unary(ddata, "+", 1); + + case SIMPLE_HASH('p', 't'): + /* operator -> */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "->", 2); + + case SIMPLE_HASH('q', 'u'): + /* operator ? */ + ddata->cur += 2; + return demangle_read_expression_trinary(ddata, "?", 1, ":", 1); + + case SIMPLE_HASH('r', 'm'): + /* operator % */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "%", 1); + + case SIMPLE_HASH('r', 'M'): + /* operator %= */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, "%=", 2); + + case SIMPLE_HASH('r', 's'): + /* operator >> */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, ">>", 2); + + case SIMPLE_HASH('r', 'S'): + /* operator >>= */ + ddata->cur += 2; + return demangle_read_expression_binary(ddata, ">>=", 3); + + case SIMPLE_HASH('r', 'z'): + /* operator sizeof */ + ddata->cur += 2; + return demangle_read_expression_unary(ddata, "sizeof", 6); + + case SIMPLE_HASH('s', 'v'): + /* operator sizeof */ + ddata->cur += 2; + return demangle_read_expression_unary(ddata, "sizeof", 6); + } + + switch (*ddata->cur) { + case 'L': + return demangle_read_expr_primary(ddata); + case 'T': + return demangle_read_tmpl_param(ddata); + } + + return 0; +} + +static privileged int +demangle_read_expression_flat(struct demangle_data *ddata, char **str) +{ + struct vector_str *output; + size_t i, p_idx, idx, exp_len; + char *exp; + + output = &ddata->output; + + p_idx = output->size; + + if (!demangle_read_expression(ddata)) + return 0; + + if (!(exp = demangle_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 (!demangle_vector_str_pop(output)) + return 0; + + *str = exp; + + return 1; +} + +/* size, capacity, ext_name */ +static privileged void +demangle_vector_type_qualifier_init(struct demangle_data *ddata, + struct vector_type_qualifier *v) +{ + v->size = 0; + v->capacity = VECTOR_DEF_CAPACITY; + + v->q_container = (enum type_qualifier *)demangle_malloc(ddata, + alignof(enum type_qualifier), + sizeof(enum type_qualifier) * v->capacity); + + ASSERT(v->q_container); + + demangle_vector_str_init(ddata, &v->ext_name); +} + +static privileged struct read_cmd_item * +demangle_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 privileged int +demangle_read_function(struct demangle_data *ddata, int *ext_c, + struct vector_type_qualifier *v) +{ + struct type_delimit td; + struct read_cmd_item *rc; + size_t class_type_size, class_type_len, limit; + const char *class_type; + int i; + bool paren, non_cv_qualifier; + + if (*ddata->cur != 'F') + return 0; + + ++ddata->cur; + if (*ddata->cur == 'Y') { + if (ext_c) + *ext_c = 1; + ++ddata->cur; + } + + /* Return type */ + if (!demangle_read_type(ddata, NULL)) + return 0; + + if (*ddata->cur != 'E') { + if (!DEM_PUSH_STR(ddata, " ")) + return 0; + + non_cv_qualifier = false; + if (v->size > 0) { + 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) { + non_cv_qualifier = true; + break; + } + } + } + + paren = false; + rc = demangle_vector_read_cmd_find(&ddata->cmd, READ_PTRMEM); + if (non_cv_qualifier || rc != NULL) { + if (!DEM_PUSH_STR(ddata, "(")) + return 0; + paren = true; + } + + /* Push non-cv qualifiers. */ + ddata->push_qualifier = PUSH_NON_CV_QUALIFIER; + if (!demangle_push_type_qualifier(ddata, v, NULL)) + return 0; + + if (rc) { + if (non_cv_qualifier && !DEM_PUSH_STR(ddata, " ")) + return 0; + if (!(class_type_size = ddata->class_type.size)) + return 0; + class_type = VEC_STR(ddata, &ddata->class_type, + class_type_size - 1); + if (!class_type) + return 0; + if (!(class_type_len = demangle_strlen(class_type))) + return 0; + if (!demangle_push_str(ddata, class_type, + class_type_len)) + return 0; + if (!DEM_PUSH_STR(ddata, "::*")) + return 0; + /* Push pointer-to-member qualifiers. */ + ddata->push_qualifier = PUSH_ALL_QUALIFIER; + if (!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; + paren = false; + } + + td.paren = false; + td.firstp = true; + limit = 0; + ddata->is_functype = true; + for (;;) { + if (!demangle_read_type(ddata, &td)) + return 0; + if (*ddata->cur == 'E') + break; + if (limit++ > DEMANGLE_TRY_LIMIT) + return 0; + } + ddata->is_functype = false; + if (td.paren) { + if (!DEM_PUSH_STR(ddata, ")")) + return 0; + td.paren = false; + } + + /* Push CV qualifiers. */ + ddata->push_qualifier = PUSH_CV_QUALIFIER; + if (!demangle_push_type_qualifier(ddata, v, NULL)) + return 0; + + ddata->push_qualifier = PUSH_ALL_QUALIFIER; + + /* Release type qualifier vector. */ + demangle_vector_type_qualifier_init(ddata, v); + + /* Push ref-qualifiers. */ + if (ddata->ref_qualifier) { + switch (ddata->ref_qualifier_type) { + case TYPE_REF: + if (!DEM_PUSH_STR(ddata, " &")) + return 0; + break; + case TYPE_RREF: + if (!DEM_PUSH_STR(ddata, " &&")) + return 0; + break; + default: + return 0; + } + ddata->ref_qualifier = false; + } + } + + ++ddata->cur; + + return 1; +} + +static privileged int +demangle_read_offset_number(struct demangle_data *ddata) +{ + bool negative; + const char *start; + + if (*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 (!demangle_push_str(ddata, start, ddata->cur - start)) + return 0; + if (!DEM_PUSH_STR(ddata, " ")) + return 0; + + ++ddata->cur; + + return 1; +} + +static privileged int +demangle_read_nv_offset(struct demangle_data *ddata) +{ + if (!DEM_PUSH_STR(ddata, "offset : ")) + return 0; + + return demangle_read_offset_number(ddata); +} + +static privileged int +demangle_read_v_offset(struct demangle_data *ddata) +{ + if (!DEM_PUSH_STR(ddata, "offset : ")) + return 0; + + if (!demangle_read_offset_number(ddata)) + return 0; + + if (!DEM_PUSH_STR(ddata, "virtual offset : ")) + return 0; + + return !demangle_read_offset_number(ddata); +} + +/* read offset, offset are nv-offset, v-offset */ +static privileged int +demangle_read_offset(struct demangle_data *ddata) +{ + if (*ddata->cur == 'h') { + ++ddata->cur; + return demangle_read_nv_offset(ddata); + } else if (*ddata->cur == 'v') { + ++ddata->cur; + return demangle_read_v_offset(ddata); + } + + return 0; +} + +static privileged int +demangle_read_type_flat(struct 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 (!demangle_read_type(ddata, NULL)) + return 0; + + if (!(type = demangle_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 (!demangle_vector_str_pop(output)) + return 0; + + *str = type; + + return 1; +} + +/* + * read number + * number ::= [n] + */ +static privileged int +demangle_read_number(struct demangle_data *ddata, long *rtn) +{ + long len, negative_factor; + + if (!rtn) + return 0; + + negative_factor = 1; + if (*ddata->cur == 'n') { + negative_factor = -1; + + ++ddata->cur; + } + if (!ELFTC_ISDIGIT(*ddata->cur)) + return 0; + + len = demangle_strtol(ddata->cur, 10); + + while (ELFTC_ISDIGIT(*ddata->cur)) + ++ddata->cur; + + ASSERT(len >= 0); + ASSERT(negative_factor == 1 || negative_factor == -1); + + *rtn = len * negative_factor; + + return 1; +} + +static privileged int +demangle_read_number_as_string(struct demangle_data *ddata, char **str) +{ + long n; + char buf[21]; + + if (!demangle_read_number(ddata, &n)) { + *str = NULL; + return 0; + } + + demangle_itoa(buf, n); + *str = demangle_strdup(ddata, buf); + + return 1; +} + +/* read encoding, encoding are function name, data name, special-name */ +static privileged int +demangle_read_encoding(struct demangle_data *ddata) +{ + char *name, *type, *num_str; + long offset; + int rtn; + + if (*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; + ddata->cur += 2; + if (*ddata->cur == '\0') + return 0; + return demangle_read_encoding(ddata); + + case SIMPLE_HASH('G', 'R'): + if (!DEM_PUSH_STR(ddata, "reference temporary #")) + return 0; + ddata->cur += 2; + if (*ddata->cur == '\0') + return 0; + if (!demangle_read_name_flat(ddata, &name)) + return 0; + rtn = 0; + if (!demangle_read_number_as_string(ddata, &num_str)) + goto clean1; + if (!DEM_PUSH_STR(ddata, num_str)) + goto clean2; + if (!DEM_PUSH_STR(ddata, " for ")) + goto clean2; + if (!DEM_PUSH_STR(ddata, name)) + goto clean2; + rtn = 1; + clean2: + demangle_free(ddata, num_str); + clean1: + demangle_free(ddata, name); + return rtn; + + case SIMPLE_HASH('G', 'T'): + ddata->cur += 2; + if (*ddata->cur == '\0') + return 0; + switch (*ddata->cur) { + case 'n': + if (!DEM_PUSH_STR(ddata, "non-transaction clone for ")) + return 0; + break; + case 't': + default: + if (!DEM_PUSH_STR(ddata, "transaction clone for ")) + return 0; + break; + } + ++ddata->cur; + return 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; + ddata->is_guard_variable = true; + 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; + ddata->cur += 2; + if (*ddata->cur == '\0') + return 0; + if (!demangle_read_offset(ddata)) + return 0; + if (!demangle_read_offset(ddata)) + return 0; + return demangle_read_encoding(ddata); + + case SIMPLE_HASH('T', 'C'): + /* construction vtable */ + if (!DEM_PUSH_STR(ddata, "construction vtable for ")) + return 0; + ddata->cur += 2; + if (*ddata->cur == '\0') + return 0; + if (!demangle_read_type_flat(ddata, &type)) + return 0; + if (!demangle_read_number(ddata, &offset)) + return 0; + if (*ddata->cur++ != '_') + return 0; + if (!demangle_read_type(ddata, NULL)) + return 0; + if (!DEM_PUSH_STR(ddata, "-in-")) + return 0; + if (!DEM_PUSH_STR(ddata, type)) + return 0; + return 1; + + case SIMPLE_HASH('T', 'D'): + /* typeinfo common proxy */ + break; + + case SIMPLE_HASH('T', 'F'): + /* typeinfo fn */ + if (!DEM_PUSH_STR(ddata, "typeinfo fn for ")) + return 0; + ddata->cur += 2; + if (*ddata->cur == '\0') + return 0; + return 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; + ddata->cur += 2; + if (*ddata->cur == '\0') + return 0; + if (!demangle_read_nv_offset(ddata)) + return 0; + return demangle_read_encoding(ddata); + + case SIMPLE_HASH('T', 'H'): + /* TLS init function */ + if (!DEM_PUSH_STR(ddata, "TLS init function for ")) + return 0; + ddata->cur += 2; + if (*ddata->cur == '\0') + return 0; + break; + + case SIMPLE_HASH('T', 'I'): + /* typeinfo structure */ + if (!DEM_PUSH_STR(ddata, "typeinfo for ")) + return 0; + ddata->cur += 2; + if (*ddata->cur == '\0') + return 0; + return demangle_read_type(ddata, NULL); + + case SIMPLE_HASH('T', 'J'): + /* java class */ + if (!DEM_PUSH_STR(ddata, "java Class for ")) + return 0; + ddata->cur += 2; + if (*ddata->cur == '\0') + return 0; + return demangle_read_type(ddata, NULL); + + case SIMPLE_HASH('T', 'S'): + /* RTTI name (NTBS) */ + if (!DEM_PUSH_STR(ddata, "typeinfo name for ")) + return 0; + ddata->cur += 2; + if (*ddata->cur == '\0') + return 0; + return demangle_read_type(ddata, NULL); + + case SIMPLE_HASH('T', 'T'): + /* VTT table */ + if (!DEM_PUSH_STR(ddata, "VTT for ")) + return 0; + ddata->cur += 2; + if (*ddata->cur == '\0') + return 0; + return 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; + ddata->cur += 2; + if (*ddata->cur == '\0') + return 0; + if (!demangle_read_v_offset(ddata)) + return 0; + return demangle_read_encoding(ddata); + + case SIMPLE_HASH('T', 'V'): + /* virtual table */ + if (!DEM_PUSH_STR(ddata, "vtable for ")) + return 0; + ddata->cur += 2; + if (*ddata->cur == '\0') + return 0; + return demangle_read_type(ddata, NULL); + + case SIMPLE_HASH('T', 'W'): + /* TLS wrapper function */ + if (!DEM_PUSH_STR(ddata, "TLS wrapper function for ")) + return 0; + ddata->cur += 2; + if (*ddata->cur == '\0') + return 0; + break; + } + + return demangle_read_name(ddata); +} + +static privileged int +demangle_read_local_name(struct demangle_data *ddata) +{ + struct vector_str local_name; + struct type_delimit td; + size_t limit; + bool more_type; + + if (*(++ddata->cur) == '\0') + return 0; + + demangle_vector_str_init(ddata, &local_name); + ddata->cur_output = &local_name; + + if (!demangle_read_encoding(ddata)) + return 0; + + ddata->cur_output = &ddata->output; + + td.paren = false; + td.firstp = true; + more_type = false; + 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; + + /* Read return type */ + if (!demangle_read_type(ddata, NULL)) + return 0; + + more_type = true; + } + + /* Now we can push the name after possible return type is handled. */ + if (!demangle_vector_str_push_vector(ddata, &ddata->output, + &local_name)) + return 0; + + while (*ddata->cur != '\0') { + if (!demangle_read_type(ddata, &td)) + return 0; + if (more_type) + more_type = false; + if (*ddata->cur == 'E') + break; + if (limit++ > DEMANGLE_TRY_LIMIT) + return 0; + } + if (more_type) + return 0; + + if (*(++ddata->cur) == '\0') + return 0; + if (td.paren) { + if (!DEM_PUSH_STR(ddata, ")")) + return 0; + td.paren = false; + } + if (*ddata->cur == 's') + ++ddata->cur; + else { + if (!DEM_PUSH_STR(ddata, "::")) + return 0; + if (!demangle_read_name(ddata)) + return 0; + } + if (*ddata->cur == '_') { + ++ddata->cur; + while (ELFTC_ISDIGIT(*ddata->cur)) + ++ddata->cur; + } + + return 1; +} + +static privileged int +demangle_read_nested_name(struct demangle_data *ddata) +{ + struct stack_str v; + struct vector_str *output; + size_t limit, p_idx, subst_str_len; + char *subst_str; + + if (*ddata->cur != 'N') + return 0; + if (*(++ddata->cur) == '\0') + return 0; + + do { + switch (*ddata->cur) { + case 'r': + ddata->mem_rst = true; + break; + case 'V': + ddata->mem_vat = true; + break; + case 'K': + ddata->mem_cst = true; + break; + case 'R': + ddata->mem_ref = true; + break; + case 'O': + ddata->mem_rref = true; + break; + default: + goto next; + } + } while (*(++ddata->cur)); + +next: + output = ddata->cur_output; + demangle_stack_str_init(&v); + + limit = 0; + for (;;) { + p_idx = output->size; + switch (*ddata->cur) { + case 'I': + if (!demangle_read_tmpl_args(ddata)) + return 0; + break; + case 'S': + if (!demangle_read_subst(ddata)) + return 0; + break; + case 'T': + if (!demangle_read_tmpl_param(ddata)) + return 0; + break; + default: + if (!demangle_read_uqname(ddata)) + return 0; + } + + if (p_idx == output->size) + goto next_comp; + if (!(subst_str = demangle_vector_str_substr(ddata, output, + p_idx, output->size - 1, &subst_str_len))) + return 0; + demangle_stack_str_append(ddata, &v, subst_str, subst_str_len); + demangle_free(ddata, subst_str); + + if (!demangle_push_subst(ddata, v.str, v.len)) + return 0; + + next_comp: + if (*ddata->cur == 'E') + break; + else if (*ddata->cur != 'I' && *ddata->cur != 'C' && + *ddata->cur != 'D' && p_idx != output->size) { + if (!DEM_PUSH_STR(ddata, "::")) + return 0; + demangle_stack_str_append_str(ddata, &v, "::"); + } + if (limit++ > DEMANGLE_TRY_LIMIT) + return 0; + } + + ++ddata->cur; + return 1; +} + +static privileged int +demangle_read_name(struct demangle_data *ddata) +{ + struct stack_str v; + struct vector_str *output; + size_t p_idx, subst_str_len; + char *subst_str; + int rtn; + + if (*ddata->cur == '\0') + return 0; + + output = ddata->cur_output; + + subst_str = NULL; + + switch (*ddata->cur) { + case 'S': + return demangle_read_subst(ddata); + case 'N': + return demangle_read_nested_name(ddata); + case 'Z': + return demangle_read_local_name(ddata); + } + + demangle_stack_str_init(&v); + + p_idx = output->size; + rtn = 0; + if (!demangle_read_uqname(ddata)) + goto clean; + if (!(subst_str = demangle_vector_str_substr(ddata, output, p_idx, + output->size - 1, &subst_str_len))) + goto clean; + if (subst_str_len > 8 && demangle_strstr(subst_str, "operator")) { + rtn = 1; + goto clean; + } + demangle_stack_str_append(ddata, &v, subst_str, subst_str_len); + if (!demangle_push_subst(ddata, v.str, v.len)) + goto clean; + + if (*ddata->cur == 'I') { + p_idx = output->size; + if (!demangle_read_tmpl_args(ddata)) + goto clean; + if (!(subst_str = demangle_vector_str_substr(ddata, output, + p_idx, output->size - 1, &subst_str_len))) + goto clean; + demangle_stack_str_append(ddata, &v, subst_str, subst_str_len); + if (!demangle_push_subst(ddata, v.str, v.len)) + goto clean; + } + + rtn = 1; + +clean: + demangle_free(ddata, subst_str); + + return rtn; +} + +static privileged int +demangle_read_name_flat(struct 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 (!demangle_read_name(ddata)) + return 0; + + if (!(name = demangle_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 (!demangle_vector_str_pop(output)) + return 0; + + *str = name; + + return 1; +} + +static privileged int +demangle_read_pointer_to_member(struct demangle_data *ddata, + struct vector_type_qualifier *v) +{ + size_t class_type_len, i, idx, p_idx; + int p_func_type, rtn; + char *class_type; + + if (*ddata->cur != 'M' || *(++ddata->cur) == '\0') + return 0; + + p_idx = ddata->output.size; + if (!demangle_read_type(ddata, NULL)) + return 0; + + if (!(class_type = demangle_vector_str_substr(ddata, &ddata->output, + p_idx, ddata->output.size - 1, &class_type_len))) + return 0; + + rtn = 0; + idx = ddata->output.size; + for (i = p_idx; i < idx; ++i) + if (!demangle_vector_str_pop(&ddata->output)) + goto clean1; + + if (!demangle_vector_read_cmd_push(ddata, &ddata->cmd, READ_PTRMEM, v)) + goto clean1; + + if (!demangle_vector_str_push(ddata, &ddata->class_type, class_type, + class_type_len)) + goto clean2; + + p_func_type = ddata->func_type; + if (!demangle_read_type(ddata, NULL)) + goto clean3; + + if (p_func_type == ddata->func_type) { + if (!DEM_PUSH_STR(ddata, " ")) + goto clean3; + if (!demangle_push_str(ddata, class_type, class_type_len)) + goto clean3; + if (!DEM_PUSH_STR(ddata, "::*")) + goto clean3; + } + + rtn = 1; +clean3: + if (!demangle_vector_str_pop(&ddata->class_type)) + rtn = 0; +clean2: + if (!demangle_vector_read_cmd_pop(&ddata->cmd)) + rtn = 0; +clean1: + + demangle_vector_type_qualifier_init(ddata, v); + + return rtn; +} + +/* read source-name, source-name is */ +static privileged int +demangle_read_sname(struct demangle_data *ddata) +{ + long len; + int err; + + if (!demangle_read_number(ddata, &len) || len <= 0) + return 0; + + if (len == 12 && !demangle_memcmp("_GLOBAL__N_1", ddata->cur, 12)) + err = DEM_PUSH_STR(ddata, "(anonymous namespace)"); + else + err = demangle_push_str(ddata, ddata->cur, len); + + if (!err) + return 0; + + ASSERT(ddata->cur_output->size > 0); + if (!demangle_vector_read_cmd_find(&ddata->cmd, READ_TMPL)) + ddata->last_sname = VEC_STR(ddata, ddata->cur_output, + ddata->cur_output->size - 1); + + ddata->cur += len; + + return 1; +} + +static privileged int +demangle_read_subst_stdtmpl(struct demangle_data *ddata, const char *str) +{ + struct vector_str *output; + size_t p_idx, substr_len, len; + char *subst_str, *substr; + + if (!str) + return 0; + + if (!(len = demangle_strlen(str))) + return 0; + + output = ddata->cur_output; + + p_idx = output->size; + substr = NULL; + subst_str = NULL; + + if (!demangle_read_tmpl_args(ddata)) + return 0; + if (!(substr = demangle_vector_str_substr(ddata, output, p_idx, + output->size - 1, &substr_len))) + return 0; + + subst_str = (char *)demangle_malloc(ddata, alignof(char), + sizeof(char) * (substr_len + len + 1)); + + demangle_memcpy(subst_str, str, len); + demangle_memcpy(subst_str + len, substr, substr_len); + subst_str[substr_len + len] = '\0'; + + if (!demangle_push_subst(ddata, subst_str, substr_len + len)) + return 0; + + return 1; +} + +static privileged int +demangle_read_subst_std(struct demangle_data *ddata) +{ + struct vector_str *output, v; + size_t p_idx, subst_str_len; + char *subst_str; + + demangle_vector_str_init(ddata, &v); + + 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 (!demangle_read_uqname(ddata)) + return 0; + + if (!(subst_str = demangle_vector_str_substr(ddata, output, p_idx, + output->size - 1, &subst_str_len))) + return 0; + + if (!demangle_vector_str_push(ddata, &v, subst_str, subst_str_len)) + return 0; + + if (!demangle_push_subst_v(ddata, &v)) + return 0; + + if (*ddata->cur == 'I') { + p_idx = output->size; + if (!demangle_read_tmpl_args(ddata)) + return 0; + if (!(subst_str = demangle_vector_str_substr(ddata, output, + p_idx, output->size - 1, &subst_str_len))) + return 0; + if (!demangle_vector_str_push(ddata, &v, subst_str, + subst_str_len)) + return 0; + if (!demangle_push_subst_v(ddata, &v)) + return 0; + } + + return 1; +} + +static privileged int +demangle_read_subst(struct demangle_data *ddata) +{ + long nth; + + if (*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; + ddata->cur += 2; + if (*ddata->cur == 'I') + return 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; + ddata->cur += 2; + if (*ddata->cur == 'I') + return 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; + ddata->last_sname = "basic_iostream"; + ddata->cur += 2; + if (*ddata->cur == 'I') + return demangle_read_subst_stdtmpl(ddata, + "std::basic_iostream>"); + return 1; + + case SIMPLE_HASH('S', 'i'): + /* 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 demangle_read_subst_stdtmpl(ddata, + "std::basic_istream>"); + return 1; + + case SIMPLE_HASH('S', 'o'): + /* 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 demangle_read_subst_stdtmpl(ddata, + "std::basic_ostream>"); + return 1; + + case SIMPLE_HASH('S', 's'): + /* + * std::string, + * std::allocator> + * + * a.k.a std::string + * + * [jart] made it std::string for consistency with libcxxabi + */ + if (!DEM_PUSH_STR(ddata, "std::string")) + return 0; + ddata->last_sname = "string"; + ddata->cur += 2; + if (*ddata->cur == 'I') + return demangle_read_subst_stdtmpl(ddata, + "std::string"); + return 1; + + case SIMPLE_HASH('S', 't'): + /* std:: */ + return demangle_read_subst_std(ddata); + } + + if (*(++ddata->cur) == '\0') + return 0; + + /* Skip unknown substitution abbreviations. */ + if (!(*ddata->cur >= '0' && *ddata->cur <= '9') && + !(*ddata->cur >= 'A' && *ddata->cur <= 'Z') && *ddata->cur != '_') { + ++ddata->cur; + return 1; + } + + /* substitution */ + if (*ddata->cur == '_') + return demangle_get_subst(ddata, 0); + else { + /* substitution number is base 36 */ + nth = demangle_strtol(ddata->cur, 36); + + /* first was '_', so increase one */ + ++nth; + + while (*ddata->cur != '_') + ++ddata->cur; + + ASSERT(nth > 0); + + return demangle_get_subst(ddata, nth); + } + + /* NOTREACHED */ + return 0; +} + +static privileged int +demangle_vector_type_qualifier_push(struct 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); + tmp_ctn = (enum type_qualifier *)demangle_malloc(ddata, + alignof(enum type_qualifier), + sizeof(enum type_qualifier) * tmp_cap); + for (i = 0; i < v->size; ++i) + tmp_ctn[i] = v->q_container[i]; + demangle_free(ddata, v->q_container); + v->q_container = tmp_ctn; + v->capacity = tmp_cap; + } + + v->q_container[v->size] = t; + ++v->size; + + return 1; +} + +static privileged int +demangle_read_type(struct demangle_data *ddata, struct type_delimit *td) +{ + struct vector_type_qualifier v; + struct vector_str *output, sv; + size_t p_idx, type_str_len, subst_str_len; + int extern_c, is_builtin; + long len; + const char *p; + char *type_str, *exp_str, *num_str, *subst_str; + bool skip_ref_qualifier, omit_void; + + output = ddata->cur_output; + if (td) { + if (td->paren == false) { + if (!DEM_PUSH_STR(ddata, "(")) + return 0; + if (ddata->output.size < 2) + return 0; + td->paren = true; + } + + if (!td->firstp) { + if (*ddata->cur != 'I') { + if (!DEM_PUSH_STR(ddata, ", ")) + return 0; + } + } + } + + 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 + */ + + demangle_vector_type_qualifier_init(ddata, &v); + + extern_c = 0; + is_builtin = 1; + p_idx = output->size; + type_str = exp_str = num_str = NULL; + skip_ref_qualifier = false; + +again: + + /* Clear ref-qualifier flag */ + if (*ddata->cur != 'R' && *ddata->cur != 'O' && *ddata->cur != 'E') + ddata->ref_qualifier = false; + + /* builtin type */ + switch (*ddata->cur) { + case 'a': + /* signed char */ + if (!DEM_PUSH_STR(ddata, "signed char")) + return 0; + ++ddata->cur; + goto rtn; + + case 'A': + /* array type */ + if (!demangle_read_array(ddata)) + return 0; + is_builtin = 0; + goto rtn; + + case 'b': + /* bool */ + if (!DEM_PUSH_STR(ddata, "bool")) + return 0; + ++ddata->cur; + goto rtn; + + case 'C': + /* complex pair */ + if (!demangle_vector_type_qualifier_push(ddata, &v, TYPE_CMX)) + return 0; + ++ddata->cur; + if (td) + td->firstp = false; + goto again; + + case 'c': + /* char */ + if (!DEM_PUSH_STR(ddata, "char")) + return 0; + ++ddata->cur; + goto rtn; + + case 'd': + /* double */ + if (!DEM_PUSH_STR(ddata, "double")) + return 0; + ++ddata->cur; + goto rtn; + + case 'D': + ++ddata->cur; + switch (*ddata->cur) { + case 'a': + /* auto */ + if (!DEM_PUSH_STR(ddata, "auto")) + return 0; + ++ddata->cur; + break; + case 'c': + /* decltype(auto) */ + if (!DEM_PUSH_STR(ddata, "decltype(auto)")) + return 0; + ++ddata->cur; + break; + case 'd': + /* IEEE 754r decimal floating point (64 bits) */ + if (!DEM_PUSH_STR(ddata, "decimal64")) + return 0; + ++ddata->cur; + break; + case 'e': + /* IEEE 754r decimal floating point (128 bits) */ + if (!DEM_PUSH_STR(ddata, "decimal128")) + return 0; + ++ddata->cur; + break; + case 'f': + /* IEEE 754r decimal floating point (32 bits) */ + if (!DEM_PUSH_STR(ddata, "decimal32")) + return 0; + ++ddata->cur; + break; + case 'h': + /* IEEE 754r half-precision floating point (16 bits) */ + if (!DEM_PUSH_STR(ddata, "half")) + return 0; + ++ddata->cur; + break; + case 'i': + /* char32_t */ + if (!DEM_PUSH_STR(ddata, "char32_t")) + return 0; + ++ddata->cur; + break; + case 'n': + /* std::nullptr_t (i.e., decltype(nullptr)) */ + if (!DEM_PUSH_STR(ddata, "decltype(nullptr)")) + return 0; + ++ddata->cur; + break; + case 's': + /* char16_t */ + if (!DEM_PUSH_STR(ddata, "char16_t")) + return 0; + ++ddata->cur; + break; + case 'v': + /* gcc vector_size extension. */ + ++ddata->cur; + if (*ddata->cur == '_') { + ++ddata->cur; + if (!demangle_read_expression_flat(ddata, + &exp_str)) + return 0; + if (!VEC_PUSH_STR(&v.ext_name, exp_str)) + return 0; + } else { + if (!demangle_read_number_as_string(ddata, + &num_str)) + return 0; + if (!VEC_PUSH_STR(&v.ext_name, num_str)) + return 0; + } + if (*ddata->cur != '_') + return 0; + ++ddata->cur; + if (!demangle_vector_type_qualifier_push(ddata, &v, + TYPE_VEC)) + return 0; + if (td) + td->firstp = false; + goto again; + default: + return 0; + } + goto rtn; + + case 'e': + /* long double */ + if (!DEM_PUSH_STR(ddata, "long double")) + return 0; + ++ddata->cur; + goto rtn; + + case 'E': + /* unexpected end (except some things) */ + if (ddata->is_guard_variable) + td->paren = false; + if (ddata->is_guard_variable || + (ddata->ref_qualifier && ddata->is_functype)) { + skip_ref_qualifier = true; + /* Pop the delimiter. */ + demangle_pop_str(ddata); + goto rtn; + } + return 0; + + case 'f': + /* float */ + if (!DEM_PUSH_STR(ddata, "float")) + return 0; + ++ddata->cur; + goto rtn; + + case 'F': + /* function */ + if (!demangle_read_function(ddata, &extern_c, &v)) + return 0; + is_builtin = 0; + goto rtn; + + case 'g': + /* __float128 */ + if (!DEM_PUSH_STR(ddata, "__float128")) + return 0; + ++ddata->cur; + goto rtn; + + case 'G': + /* imaginary */ + if (!demangle_vector_type_qualifier_push(ddata, &v, TYPE_IMG)) + return 0; + ++ddata->cur; + if (td) + td->firstp = false; + goto again; + + case 'h': + /* unsigned char */ + if (!DEM_PUSH_STR(ddata, "unsigned char")) + return 0; + ++ddata->cur; + goto rtn; + + case 'i': + /* int */ + if (!DEM_PUSH_STR(ddata, "int")) + return 0; + ++ddata->cur; + goto rtn; + + case 'I': + /* template args. */ + /* handles */ + p_idx = output->size; + if (!demangle_read_tmpl_args(ddata)) + goto clean; + if (!(subst_str = demangle_vector_str_substr(ddata, output, + p_idx, output->size - 1, &subst_str_len))) + goto clean; + demangle_vector_str_init(ddata, &sv); + if (!demangle_vector_str_push(ddata, &sv, subst_str, + subst_str_len)) { + demangle_free(ddata, subst_str); + demangle_vector_str_dest(ddata, &sv); + goto clean; + } + demangle_free(ddata, subst_str); + if (!demangle_push_subst_v(ddata, &sv)) { + demangle_vector_str_dest(ddata, &sv); + goto clean; + } + demangle_vector_str_dest(ddata, &sv); + goto rtn; + + case 'j': + /* unsigned int */ + if (!DEM_PUSH_STR(ddata, "unsigned int")) + return 0; + ++ddata->cur; + goto rtn; + + case 'K': + /* const */ + if (!demangle_vector_type_qualifier_push(ddata, &v, TYPE_CST)) + return 0; + ++ddata->cur; + if (td) + td->firstp = false; + goto again; + + case 'l': + /* long */ + if (!DEM_PUSH_STR(ddata, "long")) + return 0; + ++ddata->cur; + goto rtn; + + case 'm': + /* unsigned long */ + if (!DEM_PUSH_STR(ddata, "unsigned long")) + return 0; + + ++ddata->cur; + + goto rtn; + case 'M': + /* pointer to member */ + if (!demangle_read_pointer_to_member(ddata, &v)) + return 0; + is_builtin = 0; + goto rtn; + + case 'n': + /* __int128 */ + if (!DEM_PUSH_STR(ddata, "__int128")) + return 0; + ++ddata->cur; + goto rtn; + + case 'o': + /* unsigned __int128 */ + if (!DEM_PUSH_STR(ddata, "unsigned __int128")) + return 0; + ++ddata->cur; + goto rtn; + + case 'O': + /* rvalue reference */ + if (ddata->ref_qualifier) + return 0; + if (!demangle_vector_type_qualifier_push(ddata, &v, TYPE_RREF)) + return 0; + ddata->ref_qualifier = true; + ddata->ref_qualifier_type = TYPE_RREF; + ++ddata->cur; + if (td) + td->firstp = false; + goto again; + + case 'P': + /* pointer */ + if (!demangle_vector_type_qualifier_push(ddata, &v, TYPE_PTR)) + return 0; + ++ddata->cur; + if (td) + td->firstp = false; + goto again; + + case 'r': + /* restrict */ + if (!demangle_vector_type_qualifier_push(ddata, &v, TYPE_RST)) + return 0; + ++ddata->cur; + if (td) + td->firstp = false; + goto again; + + case 'R': + /* reference */ + if (ddata->ref_qualifier) + return 0; + if (!demangle_vector_type_qualifier_push(ddata, &v, TYPE_REF)) + return 0; + ddata->ref_qualifier = true; + ddata->ref_qualifier_type = TYPE_REF; + ++ddata->cur; + if (td) + td->firstp = false; + goto again; + + case 's': + /* short, local string */ + if (!DEM_PUSH_STR(ddata, "short")) + return 0; + ++ddata->cur; + goto rtn; + + case 'S': + /* substitution */ + if (!demangle_read_subst(ddata)) + return 0; + is_builtin = 0; + goto rtn; + + case 't': + /* unsigned short */ + if (!DEM_PUSH_STR(ddata, "unsigned short")) + return 0; + ++ddata->cur; + goto rtn; + + case 'T': + /* template parameter */ + if (!demangle_read_tmpl_param(ddata)) + return 0; + is_builtin = 0; + goto rtn; + + case 'u': + /* vendor extended builtin */ + ++ddata->cur; + if (!demangle_read_sname(ddata)) + return 0; + is_builtin = 0; + goto rtn; + + case 'U': + /* vendor extended type qualifier */ + ++ddata->cur; + if (!demangle_read_number(ddata, &len)) + return 0; + if (len <= 0) + return 0; + if (!demangle_vector_str_push(ddata, &v.ext_name, ddata->cur, + len)) + return 0; + ddata->cur += len; + if (!demangle_vector_type_qualifier_push(ddata, &v, TYPE_EXT)) + return 0; + if (td) + td->firstp = false; + goto again; + + case 'v': + /* void */ + omit_void = false; + if (td && td->firstp) { + /* + * peek into next bytes and see if we should omit + * the "void". + */ + omit_void = true; + for (p = ddata->cur + 1; *p != '\0'; p++) { + if (*p == 'E') + break; + if (*p != 'R' && *p != 'O') { + omit_void = false; + break; + } + } + } + if (!omit_void && !DEM_PUSH_STR(ddata, "void")) + return 0; + ++ddata->cur; + goto rtn; + + case 'V': + /* volatile */ + if (!demangle_vector_type_qualifier_push(ddata, &v, TYPE_VAT)) + return 0; + ++ddata->cur; + if (td) + td->firstp = false; + goto again; + + case 'w': + /* wchar_t */ + if (!DEM_PUSH_STR(ddata, "wchar_t")) + return 0; + ++ddata->cur; + goto rtn; + + case 'x': + /* long long */ + if (!DEM_PUSH_STR(ddata, "long long")) + return 0; + ++ddata->cur; + goto rtn; + + case 'y': + /* unsigned long long */ + if (!DEM_PUSH_STR(ddata, "unsigned long long")) + return 0; + ++ddata->cur; + goto rtn; + + case 'z': + /* ellipsis */ + if (!DEM_PUSH_STR(ddata, "...")) + return 0; + ++ddata->cur; + goto rtn; + } + + if (!demangle_read_name(ddata)) + return 0; + + is_builtin = 0; +rtn: + + type_str = demangle_vector_str_substr(ddata, output, p_idx, + output->size - 1, &type_str_len); + + if (is_builtin == 0) { + if (!demangle_vector_str_find(ddata, &ddata->subst, type_str, + type_str_len) && + !demangle_vector_str_push(ddata, &ddata->subst, type_str, + type_str_len)) + goto clean; + } + + if (!skip_ref_qualifier && + !demangle_push_type_qualifier(ddata, &v, type_str)) + goto clean; + + if (td) + td->firstp = false; + + demangle_free(ddata, type_str); + demangle_free(ddata, exp_str); + demangle_free(ddata, num_str); + demangle_vector_type_qualifier_dest(ddata, &v); + + return 1; +clean: + demangle_free(ddata, type_str); + demangle_free(ddata, exp_str); + demangle_free(ddata, num_str); + demangle_vector_type_qualifier_dest(ddata, &v); + + return 0; +} + +static privileged int +demangle_copy_output(struct demangle_data *ddata, char *buf, + const struct vector_str *v, size_t buflen) +{ + size_t i, j, len = 0; + for (i = 0; i < v->size; ++i) + for (j = 0; VEC_STR(ddata, v, i)[j]; ++j) { + if (len < buflen) + buf[len] = VEC_STR(ddata, v, 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 privileged int +demangle_failure(char *buf, const char *org, size_t buflen) +{ + demangle_strlcpy(buf, org, buflen); + return -1; +} + +static privileged int +demangle(struct demangle_data *ddata, char *buf, const char *org, size_t buflen) +{ + struct vector_str ret_type; + struct type_delimit td; + size_t org_len; + unsigned int limit; + bool has_ret = false, more_type = false; + + /* Use output buffer as heap memory. */ + int max_align = sizeof(char *); + buflen = buflen > 0xfff0 ? 0xfff0 : buflen; + ddata->free = 0; + ddata->heap = ((uintptr_t)buf + max_align - 1) & -max_align; + ddata->hoff = (buflen & -max_align) - (ddata->heap - (uintptr_t)buf); + + /* Try demangling as a type for short encodings. */ + org_len = demangle_strlen(org); + if ((org_len < 2) || (org[0] != '_' || org[1] != 'Z')) { + demangle_data_init(ddata, org); + if (!demangle_read_type(ddata, 0)) + return demangle_failure(buf, org, buflen); + return demangle_copy_output(ddata, buf, &ddata->output, buflen); + } + if (org_len > 11 && !demangle_strncmp(org, "_GLOBAL__I_", 11)) { + demangle_vector_str_init(ddata, &ret_type); + if (!VEC_PUSH_STR(&ret_type, "global constructors keyed to ")) + return demangle_failure(buf, org, buflen); + if (!VEC_PUSH_STR(&ret_type, org + 11)) + return demangle_failure(buf, org, buflen); + return demangle_copy_output(ddata, buf, &ddata->output, buflen); + } + + demangle_data_init(ddata, org + 2); + + if (!demangle_read_encoding(ddata)) + return demangle_failure(buf, org, buflen); + + /* + * Pop function name from substitution candidate list. + */ + if (*ddata->cur && ddata->subst.size >= 1) { + if (!demangle_vector_str_pop(&ddata->subst)) + return demangle_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; + demangle_vector_str_init(ddata, &ret_type); + ddata->cur_output = &ret_type; + has_ret = true; + } + + while (*ddata->cur) { + /* + * GCC optimizations make symbols like foobu.constprop.1 + */ + if (*ddata->cur == '.') + break; + + /* + * 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 (!demangle_read_type(ddata, NULL)) + return demangle_failure(buf, org, buflen); + } else { + /* Read function arg type */ + if (!demangle_read_type(ddata, &td)) + return demangle_failure(buf, org, buflen); + } + + if (has_ret) { + /* Push return type to the beginning */ + if (!VEC_PUSH_STR(&ret_type, " ")) + return demangle_failure(buf, org, buflen); + if (!demangle_vector_str_push_vector_head(ddata, + &ddata->output, &ret_type)) + return demangle_failure(buf, org, buflen); + ddata->cur_output = &ddata->output; + has_ret = false; + more_type = true; + } else if (more_type) { + more_type = false; + } + if (limit++ > DEMANGLE_TRY_LIMIT) + return demangle_failure(buf, org, buflen); + } + if (more_type) + return demangle_failure(buf, org, buflen); + + if (!ddata->output.size) + return demangle_failure(buf, org, buflen); + if (td.paren && !VEC_PUSH_STR(&ddata->output, ")")) + return demangle_failure(buf, org, buflen); + if (ddata->mem_vat && !VEC_PUSH_STR(&ddata->output, " volatile")) + return demangle_failure(buf, org, buflen); + if (ddata->mem_cst && !VEC_PUSH_STR(&ddata->output, " const")) + return demangle_failure(buf, org, buflen); + if (ddata->mem_rst && !VEC_PUSH_STR(&ddata->output, " restrict")) + return demangle_failure(buf, org, buflen); + if (ddata->mem_ref && !VEC_PUSH_STR(&ddata->output, " &")) + return demangle_failure(buf, org, buflen); + if (ddata->mem_rref && !VEC_PUSH_STR(&ddata->output, " &&")) + return demangle_failure(buf, org, buflen); + if (ddata->hoff < 32) + return demangle_failure(buf, org, buflen); + return demangle_copy_output(ddata, buf, &ddata->output, ddata->hoff); +} + +/** + * Decodes IA-64 C++ ABI style symbol. + * + * 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. + * + * If you expect your symbols to be 100 characters long, you should pass + * at least 2000 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 + * and to be able to print 99% of the symbols LLVM's libcxx.a, use 5632. + * + * It's important to call __is_mangled() before this, since some 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. + * + * **WARNING**: This implementation isn't as mature as __cxa_demangle(). + * It passes 27,124 out of the 29,798 libcxxabi test cases. + * + * @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 + */ +privileged int +__demangle(char *buf, const char *org, size_t buflen) +{ + struct demangle_data ddata[1]; + if (!__builtin_setjmp(ddata->jmpbuf)) + return demangle(ddata, buf, org, buflen); + return demangle_failure(buf, org, buflen); +} + +/** + * Returns true if string is mangled by IA-64 C++ ABI style. + * + * This means it starts with either "_Z" or "_GLOBAL__I_". + */ +privileged int +__is_mangled(const char *org) +{ + if (!org) + return false; + if (org[0] != '_') + return false; + if (org[1] == 'Z') + return true; + return !demangle_strncmp(org, "_GLOBAL__I_", 11); +} 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/describebacktrace.c b/libc/intrin/describebacktrace.c index 93107f884..d6bd8f8e0 100644 --- a/libc/intrin/describebacktrace.c +++ b/libc/intrin/describebacktrace.c @@ -17,34 +17,66 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/intrin/describebacktrace.internal.h" +#include "libc/intrin/iscall.internal.h" #include "libc/intrin/kprintf.h" #include "libc/intrin/weaken.h" -#include "libc/log/libfatal.internal.h" #include "libc/nexgen32e/stackframe.h" #define N 160 +static bool IsDangerous(const void *ptr) { + if (_weaken(kisdangerous)) + return _weaken(kisdangerous)(ptr); + return false; +} + +static char *FormatHex(char *p, unsigned long x) { + int k = x ? (__builtin_clzl(x) ^ 63) + 1 : 1; + k = (k + 3) & -4; + while (k > 0) + *p++ = "0123456789abcdef"[(x >> (k -= 4)) & 15]; + *p = '\0'; + return p; +} + dontinstrument const char *(DescribeBacktrace)(char buf[N], - struct StackFrame *fr) { + const struct StackFrame *fr) { char *p = buf; char *pe = p + N; bool gotsome = false; while (fr) { - if (_weaken(kisdangerous) && _weaken(kisdangerous)(fr)) { + if (IsDangerous(fr)) { + if (p + 1 + 1 + 1 < pe) { + if (gotsome) + *p++ = ' '; + *p = '!'; + if (p + 16 + 1 < pe) { + *p++ = ' '; + p = FormatHex(p, (long)fr); + } + } break; } - if (p + 16 + 1 + 1 <= pe) { - if (gotsome) { + if (p + 16 + 1 < pe) { + unsigned char *ip = (unsigned char *)fr->addr; +#ifdef __x86_64__ + // x86 advances the progrem counter before an instruction + // begins executing. return addresses in backtraces shall + // point to code after the call, which means addr2line is + // going to print unrelated code unless we fixup the addr + if (!IsDangerous(ip)) + ip -= __is_call(ip); +#endif + if (gotsome) *p++ = ' '; - } else { + else gotsome = true; - } - p = __hexcpy(p, fr->addr); + p = FormatHex(p, (long)ip); } else { break; } fr = fr->next; } - *p = 0; + *p = '\0'; return buf; } diff --git a/libc/intrin/describebacktrace.internal.h b/libc/intrin/describebacktrace.internal.h index 407057578..9c116cd25 100644 --- a/libc/intrin/describebacktrace.internal.h +++ b/libc/intrin/describebacktrace.internal.h @@ -4,7 +4,7 @@ #include "libc/nexgen32e/stackframe.h" COSMOPOLITAN_C_START_ -const char *DescribeBacktrace(char[160], struct StackFrame *) libcesque; +const char *DescribeBacktrace(char[160], const struct StackFrame *) libcesque; #define DescribeBacktrace(x) DescribeBacktrace(alloca(160), x) COSMOPOLITAN_C_END_ 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/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/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/dll.h b/libc/intrin/dll.h index 65b701471..3b056a5d3 100644 --- a/libc/intrin/dll.h +++ b/libc/intrin/dll.h @@ -33,19 +33,22 @@ static inline struct Dll *dll_last(struct Dll *list) { static inline struct Dll *dll_first(struct Dll *list) { struct Dll *first = 0; - if (list) first = list->next; + if (list) + first = list->next; return first; } static inline struct Dll *dll_next(struct Dll *list, struct Dll *e) { struct Dll *next = 0; - if (e != list) next = e->next; + if (e != list) + next = e->next; return next; } static inline struct Dll *dll_prev(struct Dll *list, struct Dll *e) { struct Dll *prev = 0; - if (e != list->next) prev = e->prev; + if (e != list->next) + prev = e->prev; return prev; } 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/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..bbf79ad7c --- /dev/null +++ b/libc/intrin/feenableexcept.c @@ -0,0 +1,95 @@ +/*-*- 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 = __builtin_aarch64_get_fpcr(); + unsigned want = excepts << 8; + unsigned fpcr2 = fpcr | want; + if (fpcr != fpcr2) { + __builtin_aarch64_set_fpcr(fpcr2); + fpcr2 = __builtin_aarch64_get_fpsr(); + if ((fpcr2 & want) != want) + return -1; // not supported by cpu + } + return (fpcr >> 8) & FE_ALL_EXCEPT; + +#else + return -1; +#endif +} 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/float16.c b/libc/intrin/float16.c index 476a2f6c9..7da05312d 100644 --- a/libc/intrin/float16.c +++ b/libc/intrin/float16.c @@ -22,7 +22,7 @@ */ #define asint(x) ((union pun){x}).i -#define isnan(x) (((x) & 0x7fff) > 0x7c00) +#define isnan(x) (((x)&0x7fff) > 0x7c00) union pun { _Float16 f; 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/iscall.c b/libc/intrin/iscall.c new file mode 100644 index 000000000..7907d8525 --- /dev/null +++ b/libc/intrin/iscall.c @@ -0,0 +1,37 @@ +/*-*- 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/iscall.internal.h" + +// returns true if `p` is preceded by x86 call instruction +// this is actually impossible to do but we'll do our best +dontinstrument int __is_call(const unsigned char *p) { + if (p[-5] == 0xe8) + return 5; // call Jvds + if (p[-2] == 0xff && (p[-1] & 070) == 020) + return 2; // call %reg + if (p[-4] == 0xff && (p[-3] & 070) == 020) + return 4; // call disp8(%reg,%reg) + if (p[-3] == 0xff && (p[-2] & 070) == 020) + return 3; // call disp8(%reg) + if (p[-7] == 0xff && (p[-6] & 070) == 020) + return 7; // call disp32(%reg,%reg) + if (p[-6] == 0xff && (p[-5] & 070) == 020) + return 6; // call disp32(%reg) + return 0; +} diff --git a/libc/intrin/iscall.internal.h b/libc/intrin/iscall.internal.h new file mode 100644 index 000000000..d290f2386 --- /dev/null +++ b/libc/intrin/iscall.internal.h @@ -0,0 +1,10 @@ +#ifndef COSMOPOLITAN_LIBC_INTRIN_ISCALL_H_ +#define COSMOPOLITAN_LIBC_INTRIN_ISCALL_H_ +COSMOPOLITAN_C_START_ + +// returns true if `p` is preceded by x86 call instruction +// this is actually impossible to do but we'll do our best +int __is_call(const unsigned char *); + +COSMOPOLITAN_C_END_ +#endif /* COSMOPOLITAN_LIBC_INTRIN_ISCALL_H_ */ diff --git a/libc/intrin/isdebuggerpresent.c b/libc/intrin/isdebuggerpresent.c index e682cc298..0e12034f3 100644 --- a/libc/intrin/isdebuggerpresent.c +++ b/libc/intrin/isdebuggerpresent.c @@ -24,7 +24,6 @@ #include "libc/intrin/promises.internal.h" #include "libc/log/libfatal.internal.h" #include "libc/log/log.h" -#include "libc/nt/struct/teb.h" #include "libc/runtime/runtime.h" #include "libc/sysv/consts/at.h" #include "libc/sysv/consts/o.h" @@ -32,14 +31,6 @@ #define kBufSize 1024 #define kPid "TracerPid:\t" -static textwindows bool IsBeingDebugged(void) { -#ifdef __x86_64__ - return !!NtGetPeb()->BeingDebugged; -#else - return false; -#endif -} - /** * Determines if gdb, strace, windbg, etc. is controlling process. * @return non-zero if attached, otherwise 0 @@ -49,11 +40,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 false; // make virus scanners happy + 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/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/intrin/kprintf.greg.c b/libc/intrin/kprintf.greg.c index cb4c87659..d1fa8292c 100644 --- a/libc/intrin/kprintf.greg.c +++ b/libc/intrin/kprintf.greg.c @@ -18,6 +18,7 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/intrin/kprintf.h" #include "ape/sections.internal.h" +#include "libc/cosmo.h" #include "libc/dce.h" #include "libc/errno.h" #include "libc/fmt/divmod10.internal.h" @@ -121,7 +122,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 +156,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 +172,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 +194,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 +239,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 +276,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 +389,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; @@ -444,23 +458,29 @@ privileged static size_t kformat(char *b, size_t n, const char *fmt, const char *abet; signed char type; const char *s, *f; + char cxxbuf[3000]; struct CosmoTib *tib; 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 +652,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 +687,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 +712,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 +731,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 +741,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 +761,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,19 +806,24 @@ 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]; + if (_weaken(__is_mangled) && _weaken(__is_mangled)(s) && + _weaken(__demangle)(cxxbuf, s, sizeof(cxxbuf)) != -1) + s = cxxbuf; goto FormatString; } base = 4; - hash = '&'; + /* hash = '&'; */ goto FormatNumber; } case 'n': // nonstandard %n specifier - if (p < e) *p = '\n'; + if (p < e) + *p = '\n'; ++p; break; @@ -806,7 +846,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 +857,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 +899,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 +938,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 +957,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 +1000,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) { @@ -1048,7 +1101,7 @@ privileged size_t kvsnprintf(char *b, size_t n, const char *fmt, va_list v) { privileged void kvprintf(const char *fmt, va_list v) { #pragma GCC push_options #pragma GCC diagnostic ignored "-Walloca-larger-than=" - long size = __get_safe_size(8000, 3000); + long size = __get_safe_size(8000, 8000); if (size < 80) { klog(STACK_ERROR, sizeof(STACK_ERROR) - 1); return; diff --git a/libc/intrin/kprintf.h b/libc/intrin/kprintf.h index ea654acb2..d2844eb95 100644 --- a/libc/intrin/kprintf.h +++ b/libc/intrin/kprintf.h @@ -49,7 +49,8 @@ void uvprintf(const char *, va_list) libcesque; do { \ kprintf("\r\e[30;101mfatal: %s:%d: " FMT "\e[0m\n", __FILE__, __LINE__, \ ##__VA_ARGS__); \ - for (;;) asm volatile("cli\n\thlt"); \ + for (;;) \ + asm volatile("cli\n\thlt"); \ } while (0) COSMOPOLITAN_C_END_ 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/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/tinymath/magicu.c b/libc/intrin/magicu.c similarity index 99% rename from libc/tinymath/magicu.c rename to libc/intrin/magicu.c index c03d8bb87..6f27bd07a 100644 --- a/libc/tinymath/magicu.c +++ b/libc/intrin/magicu.c @@ -16,7 +16,7 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/tinymath/magicu.h" +#include "libc/intrin/magicu.h" #include "libc/assert.h" /** diff --git a/libc/tinymath/magicu.h b/libc/intrin/magicu.h similarity index 100% rename from libc/tinymath/magicu.h rename to libc/intrin/magicu.h 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..d30a3e311 100644 --- a/libc/intrin/mman.greg.c +++ b/libc/intrin/mman.greg.c @@ -45,7 +45,7 @@ #ifdef __x86_64__ #define INVERT(x) (BANE + PHYSICAL((uintptr_t)(x))) -#define NOPAGE ((uint64_t) - 1) +#define NOPAGE ((uint64_t)-1) #define APE_STACK_VADDR \ ({ \ @@ -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/nocolor.c b/libc/intrin/nocolor.c index efd2fa7f6..3c9df75eb 100644 --- a/libc/intrin/nocolor.c +++ b/libc/intrin/nocolor.c @@ -18,7 +18,6 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/dce.h" #include "libc/log/internal.h" -#include "libc/nt/version.h" #include "libc/runtime/runtime.h" #define IsDumb(s) \ @@ -51,6 +50,5 @@ bool __nocolor; __attribute__((__constructor__(20))) optimizesize textstartup void __nocolor_init(int argc, char **argv, char **envp, intptr_t *auxv) { char *s; - __nocolor = (IsWindows() && !IsAtLeastWindows10()) || - ((s = getenv("TERM")) && IsDumb(s)); + __nocolor = IsWindows() || ((s = getenv("TERM")) && IsDumb(s)); } diff --git a/libc/intrin/ntcontext2linux.c b/libc/intrin/ntcontext2linux.c index c5e68a8cb..bf9d3df15 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; @@ -47,10 +48,12 @@ 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) { - if (!cr) return; + if (!cr) + return; cr->EFlags = ctx->uc_mcontext.eflags; cr->Rax = ctx->uc_mcontext.rax; cr->Rbx = ctx->uc_mcontext.rbx; @@ -72,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)); } 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/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/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/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/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/repmovsb.h b/libc/intrin/repmovsb.h index 02a167524..cfa8f4019 100644 --- a/libc/intrin/repmovsb.h +++ b/libc/intrin/repmovsb.h @@ -5,7 +5,8 @@ forceinline void repmovsb(void **dest, const void **src, size_t cx) { char *di = (char *)*dest; const char *si = (const char *)*src; - while (cx) *di++ = *si++, cx--; + while (cx) + *di++ = *si++, cx--; *dest = di, *src = si; } diff --git a/libc/intrin/repstosb.h b/libc/intrin/repstosb.h index d0b75a05f..4b5983563 100644 --- a/libc/intrin/repstosb.h +++ b/libc/intrin/repstosb.h @@ -4,7 +4,8 @@ forceinline void *repstosb(void *dest, unsigned char al, size_t cx) { unsigned char *di = (unsigned char *)dest; - while (cx) *di++ = al, cx--; + while (cx) + *di++ = al, cx--; return di; } 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/safemacros.internal.h b/libc/intrin/safemacros.internal.h index 87b39dadd..443843f37 100644 --- a/libc/intrin/safemacros.internal.h +++ b/libc/intrin/safemacros.internal.h @@ -48,7 +48,8 @@ COSMOPOLITAN_C_START_ ({ \ autotype(a) FirstNonNullA = (a); \ autotype(a) FirstNonNullB = (b); \ - if (!FirstNonNullA && !FirstNonNullB) abort(); \ + if (!FirstNonNullA && !FirstNonNullB) \ + abort(); \ FirstNonNullA ? FirstNonNullA : FirstNonNullB; \ }) 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/stackchkfail.c b/libc/intrin/stackchkfail.c index 914e16482..b58f32c4f 100644 --- a/libc/intrin/stackchkfail.c +++ b/libc/intrin/stackchkfail.c @@ -16,9 +16,9 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/errno.h" #include "libc/intrin/kprintf.h" #include "libc/runtime/internal.h" -#include "libc/errno.h" #include "libc/runtime/runtime.h" __attribute__((__weak__)) void __stack_chk_fail(void) { 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/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/intrin/strlen.c b/libc/intrin/strlen.c index 72a32c33d..b194e208d 100644 --- a/libc/intrin/strlen.c +++ b/libc/intrin/strlen.c @@ -27,10 +27,11 @@ 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) +#define ONES ((word)-1 / 255) #define BANE (ONES * (255 / 2 + 1)) typedef unsigned long mayalias word; word w; 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..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" @@ -177,7 +178,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 +210,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) { @@ -239,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, @@ -314,7 +319,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/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/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/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/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..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 @@ -630,22 +504,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 +552,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 +621,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)) { @@ -738,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 @@ -763,7 +674,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/intrin/x86.h b/libc/intrin/x86.h new file mode 100644 index 000000000..8608454f2 --- /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; +}; + +extern 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/irq/BUILD.mk b/libc/irq/BUILD.mk index a3fb241a3..83b3e6d97 100644 --- a/libc/irq/BUILD.mk +++ b/libc/irq/BUILD.mk @@ -43,6 +43,8 @@ $(LIBC_IRQ_A).pkg: \ $(LIBC_IRQ_A_OBJS) \ $(foreach x,$(LIBC_IRQ_A_DIRECTDEPS),$($(x)_A).pkg) +$(LIBC_IRQ_A_OBJS): private COPTS += -fno-sanitize=address + LIBC_IRQ_LIBS = $(foreach x,$(LIBC_IRQ_ARTIFACTS),$($(x))) LIBC_IRQ_SRCS = $(foreach x,$(LIBC_IRQ_ARTIFACTS),$($(x)_SRCS)) LIBC_IRQ_HDRS = $(foreach x,$(LIBC_IRQ_ARTIFACTS),$($(x)_HDRS)) diff --git a/libc/irq/acpi-fadt.c b/libc/irq/acpi-fadt.c index cab665855..f29fbaf48 100644 --- a/libc/irq/acpi-fadt.c +++ b/libc/irq/acpi-fadt.c @@ -62,8 +62,8 @@ textstartup void _AcpiFadtInit(void) { _Static_assert(offsetof(AcpiTableFadt, Dsdt) == 40); _Static_assert(offsetof(AcpiTableFadt, BootFlags) == 109); _Static_assert(offsetof(AcpiTableFadt, XDsdt) == 140); - if (length >= offsetof(AcpiTableFadt, BootFlags) + sizeof(fadt->BootFlags)) - { + if (length >= + offsetof(AcpiTableFadt, BootFlags) + sizeof(fadt->BootFlags)) { _AcpiBootFlags = flags = fadt->BootFlags; KINFOF("FADT: boot flags %#x", (unsigned)flags); } diff --git a/libc/irq/acpi-xsdt.c b/libc/irq/acpi-xsdt.c index 14c6acecf..e37f92a3d 100644 --- a/libc/irq/acpi-xsdt.c +++ b/libc/irq/acpi-xsdt.c @@ -26,7 +26,6 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/dce.h" #include "libc/intrin/atomic.h" -#include "libc/serialize.h" #include "libc/intrin/directmap.internal.h" #include "libc/intrin/kprintf.h" #include "libc/irq/acpi.internal.h" @@ -34,6 +33,7 @@ #include "libc/macros.internal.h" #include "libc/nt/efi.h" #include "libc/runtime/pc.internal.h" +#include "libc/serialize.h" #include "libc/str/str.h" #include "libc/sysv/consts/map.h" #include "libc/sysv/consts/prot.h" @@ -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/iso646.internal.h b/libc/iso646.internal.h index e96f85389..e2933b161 100644 --- a/libc/iso646.internal.h +++ b/libc/iso646.internal.h @@ -2,16 +2,16 @@ #define COSMOPOLITAN_LIBC_ISO646_H_ #ifndef __cplusplus -#define and && +#define and && #define and_eq &= #define bitand & -#define bitor | -#define compl ~ -#define not ! +#define bitor | +#define compl ~ +#define not ! #define not_eq != -#define or || -#define or_eq |= -#define xor ^ +#define or || +#define or_eq |= +#define xor ^ #define xor_eq ^= #endif /* __cplusplus */ 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/cosmo.h b/libc/isystem/cosmo.h index 88fc30024..4bda8eb58 100644 --- a/libc/isystem/cosmo.h +++ b/libc/isystem/cosmo.h @@ -43,7 +43,6 @@ #include "libc/intrin/weaken.h" #include "libc/mem/critbit0.h" #include "libc/mem/gc.h" -#include "libc/mem/hook.internal.h" #include "libc/nexgen32e/rdtsc.h" #include "libc/nexgen32e/stackframe.h" #include "libc/nexgen32e/x86feature.h" @@ -60,6 +59,7 @@ #include "libc/str/utf16.h" #include "libc/sysv/errfuns.h" #include "net/http/http.h" +#include "tool/args/args.h" #ifdef COSMO_ALREADY_DEFINED #undef COSMO_ALREADY_DEFINED 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/cxxabi.h b/libc/isystem/cxxabi.h index 79cae3499..b707b2d89 100644 --- a/libc/isystem/cxxabi.h +++ b/libc/isystem/cxxabi.h @@ -1,5 +1,5 @@ #ifndef COSMOPOLITAN_LIBC_ISYSTEM_CXXABI_H_ #define COSMOPOLITAN_LIBC_ISYSTEM_CXXABI_H_ -#include "third_party/libcxxabi/include/cxxabi.h" #include "libc/cxxabi.h" +#include "third_party/libcxxabi/include/cxxabi.h" #endif /* COSMOPOLITAN_LIBC_ISYSTEM_CXXABI_H_ */ 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/ftw.h b/libc/isystem/ftw.h index 611afc397..e00ae2b0f 100644 --- a/libc/isystem/ftw.h +++ b/libc/isystem/ftw.h @@ -1,6 +1,6 @@ #ifndef _FTW_H #define _FTW_H #include "libc/calls/weirdtypes.h" -#include "libc/sysv/consts/s.h" #include "libc/stdio/ftw.h" +#include "libc/sysv/consts/s.h" #endif /* _FTW_H */ 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/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_ */ diff --git a/libc/isystem/sys/param.h b/libc/isystem/sys/param.h index 8fbbcc0b8..d7691a360 100644 --- a/libc/isystem/sys/param.h +++ b/libc/isystem/sys/param.h @@ -1,12 +1,12 @@ #ifndef COSMOPOLITAN_LIBC_ISYSTEM_SYS_PARAM_H_ #define COSMOPOLITAN_LIBC_ISYSTEM_SYS_PARAM_H_ -#include "libc/intrin/newbie.h" #include "libc/calls/calls.h" #include "libc/calls/struct/rlimit.h" #include "libc/calls/struct/rusage.h" -#include "libc/stdio/sysparam.h" #include "libc/calls/weirdtypes.h" +#include "libc/intrin/newbie.h" #include "libc/limits.h" +#include "libc/stdio/sysparam.h" #include "libc/sysv/consts/endian.h" #include "libc/sysv/consts/prio.h" #include "libc/sysv/consts/rlim.h" diff --git a/libc/isystem/sys/signal.h b/libc/isystem/sys/signal.h index 5982f049a..ab2de67e2 100644 --- a/libc/isystem/sys/signal.h +++ b/libc/isystem/sys/signal.h @@ -3,6 +3,6 @@ #include "libc/calls/calls.h" #include "libc/calls/struct/sigaction.h" #include "libc/calls/struct/siginfo.h" -#include "libc/sysv/consts/sig.h" #include "libc/sysv/consts/sicode.h" +#include "libc/sysv/consts/sig.h" #endif /* COSMOPOLITAN_LIBC_ISYSTEM_SYS_SIGNAL_H_ */ 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/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/tgmath.h b/libc/isystem/tgmath.h index a62b88a59..28d124486 100644 --- a/libc/isystem/tgmath.h +++ b/libc/isystem/tgmath.h @@ -7,324 +7,316 @@ /* from https://en.cppreference.com/w/c/numeric/tgmath */ -#define fabs(x) \ - _Generic((x), float \ - : fabsf, default \ - : fabs, long double \ - : fabsl, complex float \ - : cabsf, complex double \ - : cabs, complex long double \ - : cabsl)(x) +#define fabs(x) \ + _Generic((x), \ + float: fabsf, \ + default: fabs, \ + long double: fabsl, \ + complex float: cabsf, \ + complex double: cabs, \ + complex long double: cabsl)(x) -#define exp(x) \ - _Generic((x), float \ - : expf, default \ - : exp, long double \ - : expl, complex float \ - : cexpf, complex double \ - : cexp, complex long double \ - : cexpl)(x) +#define exp(x) \ + _Generic((x), \ + float: expf, \ + default: exp, \ + long double: expl, \ + complex float: cexpf, \ + complex double: cexp, \ + complex long double: cexpl)(x) -#define log(x) \ - _Generic((x), float \ - : logf, default \ - : log, long double \ - : logl, complex float \ - : clogf, complex double \ - : clog, complex long double \ - : clogl)(x) +#define log(x) \ + _Generic((x), \ + float: logf, \ + default: log, \ + long double: logl, \ + complex float: clogf, \ + complex double: clog, \ + complex long double: clogl)(x) -#define pow(x, y) \ - _Generic((x), float \ - : powf, default \ - : pow, long double \ - : powl, complex float \ - : cpowf, complex double \ - : cpow, complex long double \ - : cpowl)(x, y) +#define pow(x, y) \ + _Generic((x), \ + float: powf, \ + default: pow, \ + long double: powl, \ + complex float: cpowf, \ + complex double: cpow, \ + complex long double: cpowl)(x, y) -#define sqrt(x) \ - _Generic((x), float \ - : sqrtf, default \ - : sqrt, long double \ - : sqrtl, complex float \ - : csqrtf, complex double \ - : csqrt, complex long double \ - : csqrtl)(x) +#define sqrt(x) \ + _Generic((x), \ + float: sqrtf, \ + default: sqrt, \ + long double: sqrtl, \ + complex float: csqrtf, \ + complex double: csqrt, \ + complex long double: csqrtl)(x) -#define sin(x) \ - _Generic((x), float \ - : sinf, default \ - : sin, long double \ - : sinl, complex float \ - : csinf, complex double \ - : csin, complex long double \ - : csinl)(x) +#define sin(x) \ + _Generic((x), \ + float: sinf, \ + default: sin, \ + long double: sinl, \ + complex float: csinf, \ + complex double: csin, \ + complex long double: csinl)(x) -#define cos(x) \ - _Generic((x), float \ - : cosf, default \ - : cos, long double \ - : cosl, complex float \ - : ccosf, complex double \ - : ccos, complex long double \ - : ccosl)(x) +#define cos(x) \ + _Generic((x), \ + float: cosf, \ + default: cos, \ + long double: cosl, \ + complex float: ccosf, \ + complex double: ccos, \ + complex long double: ccosl)(x) -#define tan(x) \ - _Generic((x), float \ - : tanf, default \ - : tan, long double \ - : tanl, complex float \ - : ctanf, complex double \ - : ctan, complex long double \ - : ctanl)(x) +#define tan(x) \ + _Generic((x), \ + float: tanf, \ + default: tan, \ + long double: tanl, \ + complex float: ctanf, \ + complex double: ctan, \ + complex long double: ctanl)(x) -#define asin(x) \ - _Generic((x), float \ - : asinf, default \ - : asin, long double \ - : asinl, complex float \ - : casinf, complex double \ - : casin, complex long double \ - : casinl)(x) +#define asin(x) \ + _Generic((x), \ + float: asinf, \ + default: asin, \ + long double: asinl, \ + complex float: casinf, \ + complex double: casin, \ + complex long double: casinl)(x) -#define acos(x) \ - _Generic((x), float \ - : acosf, default \ - : acos, long double \ - : acosl, complex float \ - : cacosf, complex double \ - : cacos, complex long double \ - : cacosl)(x) +#define acos(x) \ + _Generic((x), \ + float: acosf, \ + default: acos, \ + long double: acosl, \ + complex float: cacosf, \ + complex double: cacos, \ + complex long double: cacosl)(x) -#define atan(x) \ - _Generic((x), float \ - : atanf, default \ - : atan, long double \ - : atanl, complex float \ - : catanf, complex double \ - : catan, complex long double \ - : catanl)(x) +#define atan(x) \ + _Generic((x), \ + float: atanf, \ + default: atan, \ + long double: atanl, \ + complex float: catanf, \ + complex double: catan, \ + complex long double: catanl)(x) -#define sinh(x) \ - _Generic((x), float \ - : sinhf, default \ - : sinh, long double \ - : sinhl, complex float \ - : csinhf, complex double \ - : csinh, complex long double \ - : csinhl)(x) +#define sinh(x) \ + _Generic((x), \ + float: sinhf, \ + default: sinh, \ + long double: sinhl, \ + complex float: csinhf, \ + complex double: csinh, \ + complex long double: csinhl)(x) -#define cosh(x) \ - _Generic((x), float \ - : coshf, default \ - : cosh, long double \ - : coshl, complex float \ - : ccoshf, complex double \ - : ccosh, complex long double \ - : ccoshl)(x) +#define cosh(x) \ + _Generic((x), \ + float: coshf, \ + default: cosh, \ + long double: coshl, \ + complex float: ccoshf, \ + complex double: ccosh, \ + complex long double: ccoshl)(x) -#define tanh(x) \ - _Generic((x), float \ - : tanhf, default \ - : tanh, long double \ - : tanhl, complex float \ - : ctanhf, complex double \ - : ctanh, complex long double \ - : ctanhl)(x) +#define tanh(x) \ + _Generic((x), \ + float: tanhf, \ + default: tanh, \ + long double: tanhl, \ + complex float: ctanhf, \ + complex double: ctanh, \ + complex long double: ctanhl)(x) -#define asinh(x) \ - _Generic((x), float \ - : asinhf, default \ - : asinh, long double \ - : asinhl, complex float \ - : casinhf, complex double \ - : casinh, complex long double \ - : casinhl)(x) +#define asinh(x) \ + _Generic((x), \ + float: asinhf, \ + default: asinh, \ + long double: asinhl, \ + complex float: casinhf, \ + complex double: casinh, \ + complex long double: casinhl)(x) -#define acosh(x) \ - _Generic((x), float \ - : acoshf, default \ - : acosh, long double \ - : acoshl, complex float \ - : cacoshf, complex double \ - : cacosh, complex long double \ - : cacoshl)(x) +#define acosh(x) \ + _Generic((x), \ + float: acoshf, \ + default: acosh, \ + long double: acoshl, \ + complex float: cacoshf, \ + complex double: cacosh, \ + complex long double: cacoshl)(x) -#define atanh(x) \ - _Generic((x), float \ - : atanhf, default \ - : atanh, long double \ - : atanhl, complex float \ - : catanhf, complex double \ - : catanh, complex long double \ - : catanhl)(x) +#define atanh(x) \ + _Generic((x), \ + float: atanhf, \ + default: atanh, \ + long double: atanhl, \ + complex float: catanhf, \ + complex double: catanh, \ + complex long double: catanhl)(x) #define atan2(x, y) \ - _Generic((x), float : atan2f, default : atan2, long double : atan2l)(x, y) + _Generic((x), float: atan2f, default: atan2, long double: atan2l)(x, y) #define cbrt(x) \ - _Generic((x), float : cbrtf, default : cbrt, long double : cbrtl)(x) + _Generic((x), float: cbrtf, default: cbrt, long double: cbrtl)(x) #define ceil(x) \ - _Generic((x), float : ceilf, default : ceil, long double : ceill)(x) + _Generic((x), float: ceilf, default: ceil, long double: ceill)(x) -#define copysign(x, y) \ - _Generic((x), float \ - : copysignf, default \ - : copysign, long double \ - : copysignl)(x, y) +#define copysign(x, y) \ + _Generic((x), float: copysignf, default: copysign, long double: copysignl)( \ + x, y) -#define erf(x) _Generic((x), float : erff, default : erf, long double : erfl)(x) +#define erf(x) _Generic((x), float: erff, default: erf, long double: erfl)(x) #define erfc(x) \ - _Generic((x), float : erfcf, default : erfc, long double : erfcl)(x) + _Generic((x), float: erfcf, default: erfc, long double: erfcl)(x) #define exp2(x) \ - _Generic((x), float : exp2f, default : exp2, long double : exp2l)(x) + _Generic((x), float: exp2f, default: exp2, long double: exp2l)(x) #define expm1(x) \ - _Generic((x), float : expm1f, default : expm1, long double : expm1l)(x) + _Generic((x), float: expm1f, default: expm1, long double: expm1l)(x) #define fdim(x, y) \ - _Generic((x), float : fdimf, default : fdim, long double : fdiml)(x, y) + _Generic((x), float: fdimf, default: fdim, long double: fdiml)(x, y) #define floor(x) \ - _Generic((x), float : floorf, default : floor, long double : floorl)(x) + _Generic((x), float: floorf, default: floor, long double: floorl)(x) #define fma(x, y, z) \ - _Generic((x), float : fmaf, default : fma, long double : fmal)(x, y, z) + _Generic((x), float: fmaf, default: fma, long double: fmal)(x, y, z) #define fmax(x, y) \ - _Generic((x), float : fmaxf, default : fmax, long double : fmaxl)(x, y) + _Generic((x), float: fmaxf, default: fmax, long double: fmaxl)(x, y) #define fmin(x, y) \ - _Generic((x), float : fminf, default : fmin, long double : fminl)(x, y) + _Generic((x), float: fminf, default: fmin, long double: fminl)(x, y) #define fmod(x, y) \ - _Generic((x), float : fmodf, default : fmod, long double : fmodl)(x, y) + _Generic((x), float: fmodf, default: fmod, long double: fmodl)(x, y) #define frexp(x, y) \ - _Generic((x), float : frexpf, default : frexp, long double : frexpl)(x, y) + _Generic((x), float: frexpf, default: frexp, long double: frexpl)(x, y) #define hypot(x, y) \ - _Generic((x), float : hypotf, default : hypot, long double : hypotl)(x, y) + _Generic((x), float: hypotf, default: hypot, long double: hypotl)(x, y) #define ilogb(x) \ - _Generic((x), float : ilogbf, default : ilogb, long double : ilogbl)(x) + _Generic((x), float: ilogbf, default: ilogb, long double: ilogbl)(x) #define ldexp(x, y) \ - _Generic((x), float : ldexpf, default : ldexp, long double : ldexpl)(x, y) + _Generic((x), float: ldexpf, default: ldexp, long double: ldexpl)(x, y) #define lgamma(x) \ - _Generic((x), float : lgammaf, default : lgamma, long double : lgammal)(x) + _Generic((x), float: lgammaf, default: lgamma, long double: lgammal)(x) #define llrint(x) \ - _Generic((x), float : llrintf, default : llrint, long double : llrintl)(x) + _Generic((x), float: llrintf, default: llrint, long double: llrintl)(x) #define llround(x) \ - _Generic((x), float : llroundf, default : llround, long double : llroundl)(x) + _Generic((x), float: llroundf, default: llround, long double: llroundl)(x) #define log10(x) \ - _Generic((x), float : log10f, default : log10, long double : log10l)(x) + _Generic((x), float: log10f, default: log10, long double: log10l)(x) #define log1p(x) \ - _Generic((x), float : log1pf, default : log1p, long double : log1pl)(x) + _Generic((x), float: log1pf, default: log1p, long double: log1pl)(x) #define log2(x) \ - _Generic((x), float : log2f, default : log2, long double : log2l)(x) + _Generic((x), float: log2f, default: log2, long double: log2l)(x) #define logb(x) \ - _Generic((x), float : logbf, default : logb, long double : logbl)(x) + _Generic((x), float: logbf, default: logb, long double: logbl)(x) #define lrint(x) \ - _Generic((x), float : lrintf, default : lrint, long double : lrintl)(x) + _Generic((x), float: lrintf, default: lrint, long double: lrintl)(x) #define lround(x) \ - _Generic((x), float : lroundf, default : lround, long double : lroundl)(x) + _Generic((x), float: lroundf, default: lround, long double: lroundl)(x) -#define nearbyint(x) \ - _Generic((x), float \ - : nearbyintf, default \ - : nearbyint, long double \ - : nearbyintl)(x) +#define nearbyint(x) \ + _Generic((x), \ + float: nearbyintf, \ + default: nearbyint, \ + long double: nearbyintl)(x) -#define nextafter(x, y) \ - _Generic((x), float \ - : nextafterf, default \ - : nextafter, long double \ - : nextafterl)(x, y) +#define nextafter(x, y) \ + _Generic((x), \ + float: nextafterf, \ + default: nextafter, \ + long double: nextafterl)(x, y) -#define nexttoward(x, y) \ - _Generic((x), float \ - : nexttowardf, default \ - : nexttoward, long double \ - : nexttowardl)(x, y) +#define nexttoward(x, y) \ + _Generic((x), \ + float: nexttowardf, \ + default: nexttoward, \ + long double: nexttowardl)(x, y) -#define remainder(x, y) \ - _Generic((x), float \ - : remainderf, default \ - : remainder, long double \ - : remainderl)(x, y) +#define remainder(x, y) \ + _Generic((x), \ + float: remainderf, \ + default: remainder, \ + long double: remainderl)(x, y) -#define remquo(x, y, z) \ - _Generic((x), float \ - : remquof, default \ - : remquo, long double \ - : remquol)(x, y, z) +#define remquo(x, y, z) \ + _Generic((x), float: remquof, default: remquo, long double: remquol)(x, y, z) #define rint(x) \ - _Generic((x), float : rintf, default : rint, long double : rintl)(x) + _Generic((x), float: rintf, default: rint, long double: rintl)(x) #define round(x) \ - _Generic((x), float : roundf, default : round, long double : roundl)(x) + _Generic((x), float: roundf, default: round, long double: roundl)(x) -#define scalbln(x, y) \ - _Generic((x), float \ - : scalblnf, default \ - : scalbln, long double \ - : scalblnl)(x, y) +#define scalbln(x, y) \ + _Generic((x), float: scalblnf, default: scalbln, long double: scalblnl)(x, y) #define scalbn(x, y) \ - _Generic((x), float : scalbnf, default : scalbn, long double : scalbnl)(x, y) + _Generic((x), float: scalbnf, default: scalbn, long double: scalbnl)(x, y) #define tgamma(x) \ - _Generic((x), float : tgammaf, default : tgamma, long double : tgammal)(x) + _Generic((x), float: tgammaf, default: tgamma, long double: tgammal)(x) #define trunc(x) \ - _Generic((x), float : truncf, default : trunc, long double : truncl)(x) + _Generic((x), float: truncf, default: trunc, long double: truncl)(x) -#define carg(x) \ - _Generic((x), complex float \ - : cargf, default \ - : carg, complex long double \ - : cargl)(x) +#define carg(x) \ + _Generic((x), \ + complex float: cargf, \ + default: carg, \ + complex long double: cargl)(x) -#define conj(x) \ - _Generic((x), complex float \ - : conjf, default \ - : conj, complex long double \ - : conjl)(x) +#define conj(x) \ + _Generic((x), \ + complex float: conjf, \ + default: conj, \ + complex long double: conjl)(x) #undef creal -#define creal(x) \ - _Generic((x), complex float \ - : crealf, default \ - : creal, complex long double \ - : creall)(x) +#define creal(x) \ + _Generic((x), \ + complex float: crealf, \ + default: creal, \ + complex long double: creall)(x) #undef cimag -#define cimag(x) \ - _Generic((x), complex float \ - : cimagf, default \ - : cimag, complex long double \ - : cimagl)(x) +#define cimag(x) \ + _Generic((x), \ + complex float: cimagf, \ + default: cimag, \ + complex long double: cimagl)(x) -#define cproj(x) \ - _Generic((x), complex float \ - : cprojf, default \ - : cproj, complex long double \ - : cprojl)(x) +#define cproj(x) \ + _Generic((x), \ + complex float: cprojf, \ + default: cproj, \ + complex long double: cprojl)(x) #endif /* C11 */ #endif /* _TGMATH_H */ 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/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/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/tinygetopt.h b/libc/isystem/tinygetopt.h new file mode 100644 index 000000000..59b701162 --- /dev/null +++ b/libc/isystem/tinygetopt.h @@ -0,0 +1 @@ +#include "third_party/getopt/getopt.internal.h" 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/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/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/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/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/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/isystem/winternl.h b/libc/isystem/winternl.h index d5d1b691b..6463ecba1 100644 --- a/libc/isystem/winternl.h +++ b/libc/isystem/winternl.h @@ -2,6 +2,4 @@ #define COSMOPOLITAN_LIBC_ISYSTEM_WINTERNL_H_ #include "libc/nt/ntdll.h" #include "libc/nt/struct/ldr.h" -#include "libc/nt/struct/peb.h" -#include "libc/nt/struct/teb.h" #endif /* COSMOPOLITAN_LIBC_ISYSTEM_WINTERNL_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/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/appendresourcereport.c b/libc/log/appendresourcereport.c index cf9dca0e5..ed6b839d4 100644 --- a/libc/log/appendresourcereport.c +++ b/libc/log/appendresourcereport.c @@ -18,10 +18,10 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/calls/struct/rusage.h" #include "libc/fmt/itoa.h" -#include "libc/serialize.h" #include "libc/log/log.h" #include "libc/math.h" #include "libc/runtime/clktck.h" +#include "libc/serialize.h" #include "libc/stdio/append.h" struct State { 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..b3eeac606 100644 --- a/libc/log/backtrace2.c +++ b/libc/log/backtrace2.c @@ -24,6 +24,8 @@ #include "libc/dce.h" #include "libc/errno.h" #include "libc/fmt/itoa.h" +#include "libc/intrin/describebacktrace.internal.h" +#include "libc/intrin/iscall.internal.h" #include "libc/intrin/kprintf.h" #include "libc/intrin/promises.internal.h" #include "libc/intrin/weaken.h" @@ -66,7 +68,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; } @@ -112,6 +114,8 @@ static int PrintBacktraceUsingAddr2line(int fd, const struct StackFrame *bp) { --gi; } while ((addr = garbage->p[gi].ret) == (uintptr_t)_weaken(__gc)); } + if (!kisdangerous((const unsigned char *)addr)) + addr -= __is_call((const unsigned char *)addr); #endif argv[i++] = buf + j; buf[j++] = '0'; @@ -135,7 +139,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 +155,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 +168,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 +198,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..6ed1f82f7 100644 --- a/libc/log/backtrace3.c +++ b/libc/log/backtrace3.c @@ -18,7 +18,9 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/assert.h" #include "libc/calls/calls.h" +#include "libc/cosmo.h" #include "libc/fmt/itoa.h" +#include "libc/intrin/iscall.internal.h" #include "libc/intrin/kprintf.h" #include "libc/intrin/weaken.h" #include "libc/log/backtrace.internal.h" @@ -29,6 +31,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,11 +50,14 @@ dontinstrument dontasan int PrintBacktraceUsingSymbols( int fd, const struct StackFrame *bp, struct SymbolTable *st) { size_t gi; intptr_t addr; + const char *name; + char cxxbuf[3000]; int i, symbol, addend; 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) { @@ -70,6 +76,8 @@ dontinstrument dontasan int PrintBacktraceUsingSymbols( --gi; } while ((addr = garbage->p[gi].ret) == (intptr_t)_weaken(__gc)); } + if (!kisdangerous((const unsigned char *)addr)) + addr -= __is_call((const unsigned char *)addr); #endif if (addr) { if ((symbol = __get_symbol(st, addr)) != -1) { @@ -82,8 +90,14 @@ 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)) && + (_weaken(__is_mangled) && _weaken(__is_mangled)(name))) { + _weaken(__demangle)(cxxbuf, name, sizeof(cxxbuf)); + kprintf("%012lx %lx %s%+d\n", frame, addr, cxxbuf, addend); + name = cxxbuf; + } else { + kprintf("%012lx %lx %s%+d\n", frame, addr, name, addend); + } } return 0; } 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.h b/libc/log/countbranch.h index 467d65e62..403a0c98e 100644 --- a/libc/log/countbranch.h +++ b/libc/log/countbranch.h @@ -36,7 +36,8 @@ COSMOPOLITAN_C_START_ : "=r"(Info)); \ Cond = (x); \ ++Info->total; \ - if (Cond) ++Info->taken; \ + if (Cond) \ + ++Info->taken; \ Cond; \ }) 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/gdb.h b/libc/log/gdb.h index a66eedf8d..26e252a7c 100644 --- a/libc/log/gdb.h +++ b/libc/log/gdb.h @@ -31,7 +31,8 @@ int AttachDebugger(intptr_t); while ((Rc = __inline_wait4(Pid, NULL, WNOHANG, NULL)) == 0) { \ if (g_gdbsync) { \ g_gdbsync = 0; \ - if (Rc > 0) Pid = 0; \ + if (Rc > 0) \ + Pid = 0; \ break; \ } else { \ sched_yield(); \ 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/internal.h b/libc/log/internal.h index cec8ae390..367b47dde 100644 --- a/libc/log/internal.h +++ b/libc/log/internal.h @@ -8,7 +8,7 @@ extern bool32 g_isrunningundermake; void __start_fatal(const char *, int); void __restore_tty(void); -void __oncrash(int, struct siginfo *, void *); +void __oncrash(int, siginfo_t *, void *); COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_LOG_INTERNAL_H_ */ 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/libfatal.internal.h b/libc/log/libfatal.internal.h index fd0fee8c3..4c55269c4 100644 --- a/libc/log/libfatal.internal.h +++ b/libc/log/libfatal.internal.h @@ -5,13 +5,15 @@ COSMOPOLITAN_C_START_ forceinline unsigned long __strlen(const char *s) { unsigned long n = 0; - while (*s++) ++n; + while (*s++) + ++n; return n; } forceinline 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); } @@ -86,12 +88,14 @@ forceinline char *__uintcpy(char p[hasatleast 21], uint64_t x) { } forceinline char *__intcpy(char p[hasatleast 21], int64_t x) { - if (x < 0) *p++ = '-', x = -(uint64_t)x; + if (x < 0) + *p++ = '-', x = -(uint64_t)x; return __uintcpy(p, x); } forceinline char *__fixcpy(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; } @@ -114,11 +118,15 @@ forceinline char *__strstr(const char *haystack, const char *needle) { size_t i; 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; } @@ -128,35 +136,44 @@ forceinline char16_t *__strstr16(const char16_t *haystack, 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; } forceinline const char *__strchr(const char *s, unsigned char c) { for (;; ++s) { - if ((*s & 255) == c) return s; - if (!*s) return 0; + if ((*s & 255) == c) + return s; + if (!*s) + return 0; } } forceinline unsigned long __atoul(const char *p) { int c; unsigned long x = 0; - while ('0' <= (c = *p++) && c <= '9') x *= 10, x += c - '0'; + while ('0' <= (c = *p++) && c <= '9') + x *= 10, x += c - '0'; return x; } forceinline long __atol(const char *p) { int s = *p; unsigned long x; - if (s == '-' || s == '+') ++p; + if (s == '-' || s == '+') + ++p; x = __atoul(p); - if (s == '-') x = -x; + if (s == '-') + x = -x; return x; } diff --git a/libc/log/log.h b/libc/log/log.h index 8e88377e2..d8e62f7ea 100644 --- a/libc/log/log.h +++ b/libc/log/log.h @@ -61,22 +61,26 @@ extern unsigned __log_level; /* log level for runtime check */ // log a message with the specified log level (not checking if LOGGABLE) #define LOGF(LEVEL, FMT, ...) \ do { \ - if (!_LOG_TINY) _log_untrace(); \ + if (!_LOG_TINY) \ + _log_untrace(); \ flogf(LEVEL, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \ - if (!_LOG_TINY) _log_retrace(); \ + if (!_LOG_TINY) \ + _log_retrace(); \ } while (0) // report an error without backtrace and debugger invocation #define FATALF(FMT, ...) \ do { \ - if (!_LOG_TINY) _log_untrace(); \ + if (!_LOG_TINY) \ + _log_untrace(); \ flogf(kLogError, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \ _log_exit(1); \ } while (0) #define DIEF(FMT, ...) \ do { \ - if (!_LOG_TINY) _log_untrace(); \ + if (!_LOG_TINY) \ + _log_untrace(); \ ffatalf(kLogFatal, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \ __builtin_unreachable(); \ } while (0) @@ -105,51 +109,62 @@ extern unsigned __log_level; /* log level for runtime check */ #define VERBOSEF(FMT, ...) \ do { \ if (LOGGABLE(kLogVerbose)) { \ - if (!_LOG_TINY) _log_untrace(); \ + if (!_LOG_TINY) \ + _log_untrace(); \ fverbosef(kLogVerbose, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \ - if (!_LOG_TINY) _log_retrace(); \ + if (!_LOG_TINY) \ + _log_retrace(); \ } \ } while (0) #define DEBUGF(FMT, ...) \ do { \ if (_LOG_UNLIKELY(LOGGABLE(kLogDebug))) { \ - if (!_LOG_TINY) _log_untrace(); \ + if (!_LOG_TINY) \ + _log_untrace(); \ fdebugf(kLogDebug, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \ - if (!_LOG_TINY) _log_retrace(); \ + if (!_LOG_TINY) \ + _log_retrace(); \ } \ } while (0) #define NOISEF(FMT, ...) \ do { \ if (_LOG_UNLIKELY(LOGGABLE(kLogNoise))) { \ - if (!_LOG_TINY) _log_untrace(); \ + if (!_LOG_TINY) \ + _log_untrace(); \ fnoisef(kLogNoise, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \ - if (!_LOG_TINY) _log_retrace(); \ + if (!_LOG_TINY) \ + _log_retrace(); \ } \ } while (0) #define FLOGF(F, FMT, ...) \ do { \ if (LOGGABLE(kLogInfo)) { \ - if (!_LOG_TINY) _log_untrace(); \ + if (!_LOG_TINY) \ + _log_untrace(); \ flogf(kLogInfo, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \ - if (!_LOG_TINY) _log_retrace(); \ + if (!_LOG_TINY) \ + _log_retrace(); \ } \ } while (0) #define FWARNF(F, FMT, ...) \ do { \ if (LOGGABLE(kLogWarn)) { \ - if (!_LOG_TINY) _log_untrace(); \ + if (!_LOG_TINY) \ + _log_untrace(); \ flogf(kLogWarn, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \ - if (!_LOG_TINY) _log_retrace(); \ + if (!_LOG_TINY) \ + _log_retrace(); \ } \ } while (0) #define FFATALF(F, FMT, ...) \ do { \ - if (!_LOG_TINY) _log_untrace(); \ + if (!_LOG_TINY) \ + _log_untrace(); \ flogf(kLogError, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \ _log_exit(1); \ } while (0) @@ -157,18 +172,22 @@ extern unsigned __log_level; /* log level for runtime check */ #define FDEBUGF(F, FMT, ...) \ do { \ if (_LOG_UNLIKELY(LOGGABLE(kLogDebug))) { \ - if (!_LOG_TINY) _log_untrace(); \ + if (!_LOG_TINY) \ + _log_untrace(); \ fdebugf(kLogDebug, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \ - if (!_LOG_TINY) _log_retrace(); \ + if (!_LOG_TINY) \ + _log_retrace(); \ } \ } while (0) #define FNOISEF(F, FMT, ...) \ do { \ if (_LOG_UNLIKELY(LOGGABLE(kLogNoise))) { \ - if (!_LOG_TINY) _log_untrace(); \ + if (!_LOG_TINY) \ + _log_untrace(); \ fnoisef(kLogNoise, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \ - if (!_LOG_TINY) _log_retrace(); \ + if (!_LOG_TINY) \ + _log_retrace(); \ } \ } while (0) @@ -177,9 +196,11 @@ extern unsigned __log_level; /* log level for runtime check */ int e = _log_get_errno(); \ autotype(FORM) Ax = (FORM); \ if (_LOG_UNLIKELY(Ax == (typeof(Ax))(-1)) && LOGGABLE(kLogWarn)) { \ - if (!_LOG_TINY) _log_untrace(); \ + if (!_LOG_TINY) \ + _log_untrace(); \ _log_errno(__FILE__, __LINE__, #FORM); \ - if (!_LOG_TINY) _log_retrace(); \ + if (!_LOG_TINY) \ + _log_retrace(); \ _log_set_errno(e); \ } \ Ax; \ @@ -190,9 +211,11 @@ extern unsigned __log_level; /* log level for runtime check */ int e = _log_get_errno(); \ autotype(FORM) Ax = (FORM); \ if (Ax == NULL && LOGGABLE(kLogWarn)) { \ - if (!_LOG_TINY) _log_untrace(); \ + if (!_LOG_TINY) \ + _log_untrace(); \ _log_errno(__FILE__, __LINE__, #FORM); \ - if (!_LOG_TINY) _log_retrace(); \ + if (!_LOG_TINY) \ + _log_retrace(); \ _log_set_errno(e); \ } \ Ax; \ diff --git a/libc/log/memlog.c b/libc/log/memlog.c deleted file mode 100644 index c12bc1aa6..000000000 --- a/libc/log/memlog.c +++ /dev/null @@ -1,294 +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 2022 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/atomic.h" -#include "libc/intrin/atomic.h" -#include "libc/intrin/kprintf.h" -#include "libc/log/backtrace.internal.h" -#include "libc/log/log.h" -#include "libc/macros.internal.h" -#include "libc/mem/hook.internal.h" -#include "libc/mem/mem.h" -#include "libc/runtime/symbols.internal.h" -#include "libc/sysv/consts/o.h" -#include "libc/thread/thread.h" -#include "third_party/dlmalloc/dlmalloc.h" - -/** - * @fileoverview Malloc Logging - * - * If you put the following in your main file: - * - * __static_yoink("enable_memory_log"); - * - * Then memory allocations with constant backtraces will be logged to - * standard error. The columns printed are - * - * MEM TID OP USAGE PTR OLD SIZE CALLER1 CALLER2 CALLER3 CALLER4 - * - * delimited by spaces. For example, to see peak malloc usage: - * - * ./myprog 2>log - * grep ^MEM log | sort -nk4 | tail -n10 - * - * To see the largest allocations: - * - * ./myprog 2>log - * grep ^MEM log | grep -v free | sort -nk7 | tail -n10 - */ - -static struct Memlog { - void (*free)(void *); - void *(*malloc)(size_t); - void *(*calloc)(size_t, size_t); - void *(*memalign)(size_t, size_t); - void *(*realloc)(void *, size_t); - void *(*realloc_in_place)(void *, size_t); - size_t (*bulk_free)(void *[], size_t); - struct Allocs { - long i, n, f; - struct Alloc { - void *addr; - long size; - } *p; - } allocs; - atomic_long usage; -} __memlog; - -static pthread_mutex_t __memlog_lock_obj; - -static void __memlog_lock(void) { - pthread_mutex_lock(&__memlog_lock_obj); -} - -static void __memlog_unlock(void) { - pthread_mutex_unlock(&__memlog_lock_obj); -} - -static long __memlog_size(void *p) { - return malloc_usable_size(p) + 16; -} - -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; - *a = frame->addr; - if (!(frame = frame->next)) return; - *b = frame->addr; - if (!(frame = frame->next)) return; - *c = frame->addr; - if (!(frame = frame->next)) return; - *d = frame->addr; -} - -static long __memlog_find(void *p) { - long i; - for (i = 0; i < __memlog.allocs.i; ++i) { - if (__memlog.allocs.p[i].addr == p) { - return i; - } - } - return -1; -} - -static void __memlog_insert(void *p) { - long i, n, n2; - struct Alloc *p2; - n = __memlog_size(p); - for (i = __memlog.allocs.f; i < __memlog.allocs.i; ++i) { - if (!__memlog.allocs.p[i].addr) { - __memlog.allocs.p[i].addr = p; - __memlog.allocs.p[i].size = n; - __memlog.usage += n; - return; - } - } - if (i == __memlog.allocs.n) { - p2 = __memlog.allocs.p; - n2 = __memlog.allocs.n; - n2 += 1; - n2 += n2 >> 1; - if ((p2 = dlrealloc(p2, n2 * sizeof(*p2)))) { - __memlog.allocs.p = p2; - __memlog.allocs.n = n2; - } else { - return; - } - } - __memlog.allocs.p[i].addr = p; - __memlog.allocs.p[i].size = n; - __memlog.allocs.i++; - __memlog.usage += n; -} - -static void __memlog_update(void *p2, void *p) { - long i, n; - n = __memlog_size(p2); - for (i = 0; i < __memlog.allocs.i; ++i) { - if (__memlog.allocs.p[i].addr == p) { - __memlog.usage += n - __memlog.allocs.p[i].size; - __memlog.allocs.p[i].addr = p2; - __memlog.allocs.p[i].size = n; - unassert(__memlog.usage >= 0); - return; - } - } - __builtin_unreachable(); -} - -static void __memlog_log(struct StackFrame *frame, const char *op, void *res, - void *old, size_t n) { - intptr_t a, b, c, d; - __memlog_backtrace(frame, &a, &b, &c, &d); - kprintf("MEM %6P %7s %12ld %14p %14p %8zu %t %t %t %t\n", op, - atomic_load(&__memlog.usage), res, old, n, a, b, c, d); -} - -static void __memlog_free(void *p) { - long i, n; - if (!p) return; - __memlog_lock(); - if ((i = __memlog_find(p)) != -1) { - n = __memlog.allocs.p[i].size; - __memlog.allocs.p[i].addr = 0; - __memlog.usage -= __memlog.allocs.p[i].size; - __memlog.allocs.f = MIN(__memlog.allocs.f, i); - unassert(__memlog.usage >= 0); - } else { - kprintf("memlog could not find %p\n", p); - notpossible; - } - __memlog_unlock(); - unassert(__memlog.free); - __memlog.free(p); - __memlog_log(__builtin_frame_address(0), "free", 0, p, n); -} - -static void *__memlog_malloc(size_t n) { - void *res; - unassert(__memlog.malloc); - if ((res = __memlog.malloc(n))) { - __memlog_lock(); - __memlog_insert(res); - __memlog_unlock(); - __memlog_log(__builtin_frame_address(0), "malloc", res, 0, n); - } - return res; -} - -static void *__memlog_calloc(size_t n, size_t z) { - void *res; - unassert(__memlog.calloc); - if ((res = __memlog.calloc(n, z))) { - __memlog_lock(); - __memlog_insert(res); - __memlog_unlock(); - __memlog_log(__builtin_frame_address(0), "malloc", res, 0, n * z); - } - return res; -} - -static void *__memlog_memalign(size_t l, size_t n) { - void *res; - unassert(__memlog.memalign); - if ((res = __memlog.memalign(l, n))) { - __memlog_lock(); - __memlog_insert(res); - __memlog_unlock(); - __memlog_log(__builtin_frame_address(0), "malloc", res, 0, n); - } - return res; -} - -static void *__memlog_realloc_impl(void *p, size_t n, - void *(*f)(void *, size_t), - struct StackFrame *frame) { - void *res; - unassert(f); - if ((res = f(p, n))) { - __memlog_lock(); - if (p) { - __memlog_update(res, p); - } else { - __memlog_insert(res); - } - __memlog_unlock(); - __memlog_log(frame, "realloc", res, p, n); - } - return res; -} - -static void *__memlog_realloc(void *p, size_t n) { - return __memlog_realloc_impl(p, n, __memlog.realloc, - __builtin_frame_address(0)); -} - -static void *__memlog_realloc_in_place(void *p, size_t n) { - return __memlog_realloc_impl(p, n, __memlog.realloc_in_place, - __builtin_frame_address(0)); -} - -static size_t __memlog_bulk_free(void *p[], size_t n) { - size_t i; - for (i = 0; i < n; ++i) { - __memlog_free(p[i]); - p[i] = 0; - } - return 0; -} - -static textexit void __memlog_destroy(void) { - __memlog_lock(); - hook_free = __memlog.free; - hook_malloc = __memlog.malloc; - hook_calloc = __memlog.calloc; - hook_realloc = __memlog.realloc; - hook_memalign = __memlog.memalign; - hook_bulk_free = __memlog.bulk_free; - hook_realloc_in_place = __memlog.realloc_in_place; - dlfree(__memlog.allocs.p); - __memlog.allocs.p = 0; - __memlog.allocs.i = 0; - __memlog.allocs.n = 0; - __memlog_unlock(); -} - -__attribute__((__constructor__(90))) // -static textstartup void -__memlog_init(void) { - GetSymbolTable(); - __memlog_lock(); - __memlog.free = hook_free; - hook_free = __memlog_free; - __memlog.malloc = hook_malloc; - hook_malloc = __memlog_malloc; - __memlog.calloc = hook_calloc; - hook_calloc = __memlog_calloc; - __memlog.realloc = hook_realloc; - hook_realloc = __memlog_realloc; - __memlog.memalign = hook_memalign; - hook_memalign = __memlog_memalign; - __memlog.bulk_free = hook_bulk_free; - hook_bulk_free = __memlog_bulk_free; - __memlog.realloc_in_place = hook_realloc_in_place; - hook_realloc_in_place = __memlog_realloc_in_place; - atexit(__memlog_destroy); - __memlog_unlock(); -} diff --git a/libc/log/oncrash_amd64.c b/libc/log/oncrash_amd64.c index 06e155a15..8fb2dca4d 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) { @@ -185,9 +188,9 @@ relegated static char *ShowSseRegisters(char *p, ucontext_t *ctx) { return p; } -void ShowCrashReportHook(int, int, int, struct siginfo *, ucontext_t *); +void ShowCrashReportHook(int, int, int, siginfo_t *, ucontext_t *); -static relegated void ShowCrashReport(int err, int sig, struct siginfo *si, +static relegated void ShowCrashReport(int err, int sig, siginfo_t *si, ucontext_t *ctx) { #pragma GCC push_options #pragma GCC diagnostic ignored "-Walloca-larger-than=" @@ -251,10 +254,43 @@ static relegated void ShowCrashReport(int err, int sig, struct siginfo *si, kprintf("\n"); } -relegated void __oncrash(int sig, struct siginfo *si, void *arg) { +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, siginfo_t *si, void *arg) { + static atomic_uint lock; + BLOCK_CANCELATION; + SpinLock(&lock); 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; } #endif /* __x86_64__ */ diff --git a/libc/log/oncrash_arm64.c b/libc/log/oncrash_arm64.c index eafc483fe..1d6041032 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" @@ -30,15 +31,16 @@ #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" #include "libc/intrin/describebacktrace.internal.h" #include "libc/intrin/describeflags.internal.h" #include "libc/intrin/kprintf.h" #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" @@ -80,7 +82,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 +128,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]); @@ -172,19 +178,18 @@ 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, - ucontext_t *ctx) { +static relegated void __oncrash_impl(int sig, siginfo_t *si, ucontext_t *ctx) { #pragma GCC push_options #pragma GCC diagnostic ignored "-Walloca-larger-than=" long size = __get_safe_size(10000, 4096); @@ -235,8 +240,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; @@ -261,7 +264,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 +276,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 ? " " : ""); } @@ -296,8 +302,9 @@ 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)); - if (addend) Append(b, "%+d", addend); + Append(b, "%s", GetSymbolName(st, symbol)); + if (addend) + Append(b, "%+d", addend); } } Append(b, "\n"); @@ -317,8 +324,9 @@ 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)); - if (addend) Append(b, "%+d", addend); + Append(b, "%s", GetSymbolName(st, symbol)); + if (addend) + Append(b, "%+d", addend); } } Append(b, "\n"); @@ -356,21 +364,57 @@ 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); + 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)); } -relegated void __oncrash(int sig, struct siginfo *si, void *arg) { - ucontext_t *ctx = arg; +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, siginfo_t *si, void *arg) { + static atomic_uint lock; BLOCK_CANCELATION; - __oncrash_impl(sig, si, ctx); + 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/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/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) diff --git a/libc/log/vflogf.c b/libc/log/vflogf.c index c75bae727..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) @@ -50,7 +49,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 +90,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 +115,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..1cc96f767 100644 --- a/libc/log/watch.c +++ b/libc/log/watch.c @@ -16,12 +16,12 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/serialize.h" #include "libc/intrin/kprintf.h" #include "libc/log/backtrace.internal.h" #include "libc/log/log.h" #include "libc/runtime/runtime.h" #include "libc/runtime/symbols.internal.h" +#include "libc/serialize.h" #include "libc/sysv/errfuns.h" #ifdef __x86_64__ @@ -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/macros.internal.h b/libc/macros.internal.h index ae6313384..396f2b749 100644 --- a/libc/macros.internal.h +++ b/libc/macros.internal.h @@ -21,8 +21,8 @@ #define TRUE 1 #define FALSE 0 -#define IS2POW(X) (!((X) & ((X) - 1))) -#define ROUNDUP(X, K) (((X) + (K) - 1) & -(K)) +#define IS2POW(X) (!((X) & ((X)-1))) +#define ROUNDUP(X, K) (((X) + (K)-1) & -(K)) #define ROUNDDOWN(X, K) ((X) & -(K)) #ifndef __ASSEMBLER__ #define ABS(X) ((X) >= 0 ? (X) : -(X)) @@ -40,7 +40,7 @@ #define STRINGIFY(A) __STRINGIFY(A) #define EQUIVALENT(X, Y) (__builtin_constant_p((X) == (Y)) && ((X) == (Y))) #define TYPE_BIT(type) (sizeof(type) * CHAR_BIT) -#define TYPE_SIGNED(type) (((type) - 1) < 0) +#define TYPE_SIGNED(type) (((type)-1) < 0) #define TYPE_INTEGRAL(type) (((type)0.5) != 0.5) #define ARRAYLEN(A) \ diff --git a/libc/mem/BUILD.mk b/libc/mem/BUILD.mk index 5f9bd5f97..84f5c37e1 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) @@ -43,9 +44,30 @@ $(LIBC_MEM_A_OBJS): private \ -Wframe-larger-than=4096 \ -Walloca-larger-than=4096 +o/$(MODE)/libc/mem/asan.o: private \ + CFLAGS += \ + -O2 \ + -finline \ + -finline-functions \ + -x-no-pg \ + -ffreestanding \ + -fno-sanitize=all \ + -fno-stack-protector \ + -Wframe-larger-than=4096 \ + -Walloca-larger-than=4096 \ + -fpatchable-function-entry=0,0 + +# make asan stack traces shorter +o/$(MODE)/libc/mem/asanthunk.o: private \ + CFLAGS += \ + -Os \ + $(NO_MAGIC) \ + -foptimize-sibling-calls + 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/alg.h b/libc/mem/alg.h index 4cec11a6f..ae519f76f 100644 --- a/libc/mem/alg.h +++ b/libc/mem/alg.h @@ -8,10 +8,10 @@ void *bsearch_r(const void *, const void *, size_t, size_t, int (*)(const void *, const void *, void *), void *) paramsnonnull((1, 2, 5)) nosideeffect; void djbsort(int32_t *, size_t) libcesque; -void qsort3(void *, size_t, size_t, int (*)(const void *, const void *)) - paramsnonnull(); -void qsort(void *, size_t, size_t, int (*)(const void *, const void *)) - paramsnonnull(); +void qsort3(void *, size_t, size_t, + int (*)(const void *, const void *)) libcesque paramsnonnull(); +void qsort(void *, size_t, size_t, + int (*)(const void *, const void *)) libcesque paramsnonnull(); void qsort_r(void *, size_t, size_t, int (*)(const void *, const void *, void *), void *) paramsnonnull((1, 4)); diff --git a/libc/mem/asan.c b/libc/mem/asan.c new file mode 100644 index 000000000..57c51287d --- /dev/null +++ b/libc/mem/asan.c @@ -0,0 +1,361 @@ +/*-*- 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/dce.h" +#include "libc/intrin/asan.internal.h" +#include "libc/intrin/atomic.h" +#include "libc/intrin/kprintf.h" +#include "libc/intrin/leaky.internal.h" +#include "libc/intrin/likely.h" +#include "libc/intrin/weaken.h" +#include "libc/macros.internal.h" +#include "libc/mem/mem.h" +#include "libc/runtime/symbols.internal.h" +#include "libc/stdckdint.h" +#include "libc/sysv/errfuns.h" +#include "libc/thread/thread.h" +#include "third_party/dlmalloc/dlmalloc.h" +#ifdef __SANITIZE_ADDRESS__ + +#define RBP __builtin_frame_address(0) + +struct AsanExtra { + uint64_t size; + struct AsanTrace bt; +}; + +struct ReportOriginHeap { + const unsigned char *a; + int z; +}; + +static struct AsanMorgue { + _Atomic(unsigned) i; + _Atomic(void *) p[ASAN_MORGUE_ITEMS]; +} __asan_morgue; + +static pthread_spinlock_t __asan_lock; + +static int __asan_bsr(uint64_t x) { + _Static_assert(sizeof(long long) == sizeof(uint64_t), ""); + return __builtin_clzll(x) ^ 63; +} + +static uint64_t __asan_roundup2pow(uint64_t x) { + return 2ull << __asan_bsr(x - 1); +} + +static void __asan_write48(uint64_t *value, uint64_t x) { + uint64_t cookie; + cookie = 'J' | 'T' << 8; + cookie ^= x & 0xffff; + *value = (x & 0xffffffffffff) | cookie << 48; +} + +static bool __asan_read48(uint64_t value, uint64_t *x) { + uint64_t cookie; + cookie = value >> 48; + cookie ^= value & 0xffff; + *x = (int64_t)(value << 16) >> 16; + return cookie == ('J' | 'T' << 8); +} + +static void *__asan_morgue_add(void *p) { + return atomic_exchange_explicit( + __asan_morgue.p + (atomic_fetch_add_explicit(&__asan_morgue.i, 1, + memory_order_acq_rel) & + (ARRAYLEN(__asan_morgue.p) - 1)), + p, memory_order_acq_rel); +} + +__attribute__((__destructor__)) static void __asan_morgue_flush(void) { + unsigned i; + for (i = 0; i < ARRAYLEN(__asan_morgue.p); ++i) + if (atomic_load_explicit(__asan_morgue.p + i, memory_order_acquire)) + dlfree(atomic_exchange_explicit(__asan_morgue.p + i, 0, + memory_order_release)); +} + +static size_t __asan_heap_size(size_t n) { + if (n < 0x7fffffff0000) { + n = ROUNDUP(n, _Alignof(struct AsanExtra)); + return __asan_roundup2pow(n + sizeof(struct AsanExtra)); + } else { + return -1; + } +} + +static void *__asan_allocate(size_t a, size_t n, struct AsanTrace *bt, + int underrun, int overrun, int initializer) { + char *p; + size_t c; + struct AsanExtra *e; + if ((p = dlmemalign(a, __asan_heap_size(n)))) { + c = dlmalloc_usable_size(p); + e = (struct AsanExtra *)(p + c - sizeof(*e)); + __asan_unpoison(p, n); + __asan_poison(p - 16, 16, underrun); /* see dlmalloc design */ + __asan_poison(p + n, c - n, overrun); + __asan_memset(p, initializer, n); + __asan_write48(&e->size, n); + __asan_memcpy(&e->bt, bt, sizeof(*bt)); + } + return p; +} + +static void *__asan_allocate_heap(size_t a, size_t n, struct AsanTrace *bt) { + return __asan_allocate(a, n, bt, kAsanHeapUnderrun, kAsanHeapOverrun, 0xf9); +} + +static struct AsanExtra *__asan_get_extra(const void *p, size_t *c) { + int f; + long x, n; + struct AsanExtra *e; + f = (intptr_t)p >> 16; + if (!kisdangerous(p) && (n = dlmalloc_usable_size((void *)p)) > sizeof(*e) && + !ckd_add(&x, (intptr_t)p, n) && x <= 0x800000000000 && + (LIKELY(f == (int)((x - 1) >> 16)) || !kisdangerous((void *)(x - 1))) && + (LIKELY(f == (int)((x = x - sizeof(*e)) >> 16)) || + __asan_is_mapped(x >> 16)) && + !(x & (_Alignof(struct AsanExtra) - 1))) { + *c = n; + return (struct AsanExtra *)x; + } else { + return 0; + } +} + +// Returns true if `p` was allocated by an IGNORE_LEAKS(function). +int __asan_is_leaky(void *p) { + int sym; + size_t c, i, n; + 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; + 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; + f = st->addr_base + st->symbols[sym].x; + for (l = _leaky_start; l < _leaky_end; ++l) + if (f == *l) + return 1; + } + return 0; +} + +#define __asan_trace __asan_rawtrace + +int __asan_print_trace(void *p) { + size_t c, i, n; + struct AsanExtra *e; + if (!(e = __asan_get_extra(p, &c))) { + kprintf(" bad pointer"); + return einval(); + } + if (!__asan_read48(e->size, &n)) { + kprintf(" bad cookie"); + return -1; + } + kprintf("\n%p %,lu bytes [asan]", (char *)p, n); + if (!__asan_is_mapped((((intptr_t)p >> 3) + 0x7fff8000) >> 16)) + kprintf(" (shadow not mapped?!)"); + for (i = 0; i < ARRAYLEN(e->bt.p) && e->bt.p[i]; ++i) + kprintf("\n%*lx %t", 12, e->bt.p[i], e->bt.p[i]); + return 0; +} + +static void __asan_onmemory(void *x, void *y, size_t n, void *a) { + const unsigned char *p = x; + struct ReportOriginHeap *t = a; + if ((p <= t->a && t->a < p + n) || + (p <= t->a + t->z && t->a + t->z < p + n) || + (t->a < p && p + n <= t->a + t->z)) { + kprintf("%p %,lu bytes [dlmalloc]", x, n); + __asan_print_trace(x); + kprintf("\n"); + } +} + +void __asan_report_memory_origin_heap(const unsigned char *a, int z) { + struct ReportOriginHeap t; + kprintf("\nthe memory was allocated by\n"); + t.a = a; + t.z = z; + dlmalloc_inspect_all(__asan_onmemory, &t); +} + +size_t __asan_get_heap_size(const void *p) { + size_t n, c; + struct AsanExtra *e; + if ((e = __asan_get_extra(p, &c)) && __asan_read48(e->size, &n)) + return n; + return 0; +} + +static __wur __asan_die_f *__asan_report_invalid_pointer(const void *addr) { + pthread_spin_lock(&__asan_lock); + kprintf("\n\e[J\e[1;31masan error\e[0m: this corruption at %p shadow %p\n", + addr, SHADOW(addr)); + return __asan_die(); +} + +size_t malloc_usable_size(void *p) { + size_t n, c; + struct AsanExtra *e; + if ((e = __asan_get_extra(p, &c)) && __asan_read48(e->size, &n)) + return n; + __asan_report_invalid_pointer(p)(); + __asan_unreachable(); +} + +static void __asan_deallocate(char *p, long kind) { + size_t c, n; + struct AsanExtra *e; + if ((e = __asan_get_extra(p, &c))) { + if (__asan_read48(e->size, &n)) { + __asan_poison(p, c, kind); + if (c <= ASAN_MORGUE_THRESHOLD) + p = __asan_morgue_add(p); + dlfree(p); + } else { + __asan_report_invalid_pointer(p)(); + __asan_unreachable(); + } + } else { + __asan_report_invalid_pointer(p)(); + __asan_unreachable(); + } +} + +static void *__asan_realloc_nogrow(void *p, size_t n, size_t m, + struct AsanTrace *bt) { + return 0; +} + +static void *__asan_realloc_grow(void *p, size_t n, size_t m, + struct AsanTrace *bt) { + char *q; + if ((q = __asan_allocate_heap(16, n, bt))) { + __asan_memcpy(q, p, m); + __asan_deallocate(p, kAsanHeapRelocated); + } + return q; +} + +static void *__asan_realloc_impl(void *p, size_t n, + void *grow(void *, size_t, size_t, + struct AsanTrace *)) { + size_t c, m; + struct AsanExtra *e; + if ((e = __asan_get_extra(p, &c))) { + if (__asan_read48(e->size, &m)) { + if (n <= m) { // shrink + __asan_poison((char *)p + n, m - n, kAsanHeapOverrun); + __asan_write48(&e->size, n); + return p; + } else if (n <= c - sizeof(struct AsanExtra)) { // small growth + __asan_unpoison((char *)p + m, n - m); + __asan_write48(&e->size, n); + return p; + } else { // exponential growth + return grow(p, n, m, &e->bt); + } + } + } + __asan_report_invalid_pointer(p)(); + __asan_unreachable(); +} + +void free(void *p) { + if (!p) + return; + __asan_deallocate(p, kAsanHeapFree); +} + +void *malloc(size_t size) { + struct AsanTrace bt; + __asan_trace(&bt, RBP); + return __asan_allocate_heap(16, size, &bt); +} + +void *memalign(size_t align, size_t size) { + struct AsanTrace bt; + __asan_trace(&bt, RBP); + return __asan_allocate_heap(align, size, &bt); +} + +void *calloc(size_t n, size_t m) { + struct AsanTrace bt; + __asan_trace(&bt, RBP); + if (ckd_mul(&n, n, m)) + n = -1; + return __asan_allocate(16, n, &bt, kAsanHeapUnderrun, kAsanHeapOverrun, 0x00); +} + +void *realloc(void *p, size_t n) { + struct AsanTrace bt; + if (p) { + return __asan_realloc_impl(p, n, __asan_realloc_grow); + } else { + __asan_trace(&bt, RBP); + void *res = __asan_allocate_heap(16, n, &bt); + return res; + } +} + +void *realloc_in_place(void *p, size_t n) { + return p ? __asan_realloc_impl(p, n, __asan_realloc_nogrow) : 0; +} + +int malloc_trim(size_t pad) { + __asan_morgue_flush(); + return dlmalloc_trim(pad); +} + +void *__asan_stack_malloc(size_t size, int classid) { + struct AsanTrace bt; + __asan_trace(&bt, RBP); + return __asan_allocate(16, size, &bt, kAsanStackUnderrun, kAsanStackOverrun, + 0xf9); +} + +void __asan_stack_free(char *p, size_t size, int classid) { + __asan_deallocate(p, kAsanStackFree); +} + +size_t bulk_free(void *p[], size_t n) { + size_t i; + for (i = 0; i < n; ++i) + if (p[i]) { + __asan_deallocate(p[i], kAsanHeapFree); + p[i] = 0; + } + return 0; +} + +#endif /* __SANITIZE_ADDRESS__ */ diff --git a/libc/intrin/asanthunk.c b/libc/mem/asanthunk.c similarity index 98% rename from libc/intrin/asanthunk.c rename to libc/mem/asanthunk.c index 3bc8882ca..5abecff00 100644 --- a/libc/intrin/asanthunk.c +++ b/libc/mem/asanthunk.c @@ -17,6 +17,7 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #ifdef __x86_64__ +#ifdef __SANITIZE_ADDRESS__ void __asan_report_load(void *, int); void __asan_report_store(void *, int); @@ -173,4 +174,5 @@ void __asan_store32() { __builtin_trap(); } +#endif /* __SANITIZE_ADDRESS__ */ #endif /* __x86_64__ */ diff --git a/libc/mem/bulk_free.c b/libc/mem/bulk_free.c index 8468653bb..64c736a50 100644 --- a/libc/mem/bulk_free.c +++ b/libc/mem/bulk_free.c @@ -16,11 +16,9 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/mem/hook.internal.h" #include "libc/mem/mem.h" #include "third_party/dlmalloc/dlmalloc.h" - -size_t (*hook_bulk_free)(void *[], size_t) = dlbulk_free; +#ifndef __SANITIZE_ADDRESS__ /** * Frees and clears (sets to NULL) each non-null pointer in given array. @@ -32,5 +30,7 @@ size_t (*hook_bulk_free)(void *[], size_t) = dlbulk_free; * to sort this array before calling bulk_free. */ size_t bulk_free(void **p, size_t n) { - return hook_bulk_free(p, n); + return dlbulk_free(p, n); } + +#endif /* __SANITIZE_ADDRESS__ */ diff --git a/libc/mem/calloc.c b/libc/mem/calloc.c index 7d1ffa9d2..f64294fb5 100644 --- a/libc/mem/calloc.c +++ b/libc/mem/calloc.c @@ -16,11 +16,9 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/mem/hook.internal.h" #include "libc/mem/mem.h" #include "third_party/dlmalloc/dlmalloc.h" - -void *(*hook_calloc)(size_t, size_t) = dlcalloc; +#ifndef __SANITIZE_ADDRESS__ /** * Allocates n * itemsize bytes, initialized to zero. @@ -32,5 +30,7 @@ void *(*hook_calloc)(size_t, size_t) = dlcalloc; * @see dlcalloc() */ void *calloc(size_t n, size_t itemsize) { - return hook_calloc(n, itemsize); + return dlcalloc(n, itemsize); } + +#endif /* __SANITIZE_ADDRESS__ */ 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/free.c b/libc/mem/free.c index 4fff097cb..c7ba3c233 100644 --- a/libc/mem/free.c +++ b/libc/mem/free.c @@ -16,11 +16,9 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/mem/hook.internal.h" #include "libc/mem/mem.h" #include "third_party/dlmalloc/dlmalloc.h" - -void (*hook_free)(void *) = dlfree; +#ifndef __SANITIZE_ADDRESS__ /** * Free memory returned by malloc() & co. @@ -33,5 +31,7 @@ void (*hook_free)(void *) = dlfree; * @see dlfree() */ void free(void *p) { - hook_free(p); + dlfree(p); } + +#endif /* __SANITIZE_ADDRESS__ */ 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/hook.internal.h b/libc/mem/hook.internal.h deleted file mode 100644 index 037d61ecf..000000000 --- a/libc/mem/hook.internal.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_MEM_HOOK_H_ -#define COSMOPOLITAN_LIBC_MEM_HOOK_H_ -COSMOPOLITAN_C_START_ - -extern void (*hook_free)(void *); -extern void *(*hook_malloc)(size_t); -extern void *(*hook_calloc)(size_t, size_t); -extern void *(*hook_memalign)(size_t, size_t); -extern void *(*hook_realloc)(void *, size_t); -extern void *(*hook_realloc_in_place)(void *, size_t); -extern int (*hook_malloc_trim)(size_t); -extern size_t (*hook_malloc_usable_size)(void *); -extern size_t (*hook_bulk_free)(void *[], size_t); - -COSMOPOLITAN_C_END_ -#endif /* COSMOPOLITAN_LIBC_MEM_HOOK_H_ */ diff --git a/libc/mem/malloc.c b/libc/mem/malloc.c index bf47380c6..68629fb35 100644 --- a/libc/mem/malloc.c +++ b/libc/mem/malloc.c @@ -16,11 +16,9 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/mem/hook.internal.h" #include "libc/mem/mem.h" #include "third_party/dlmalloc/dlmalloc.h" - -void *(*hook_malloc)(size_t) = dlmalloc; +#ifndef __SANITIZE_ADDRESS__ /** * Allocates uninitialized memory. @@ -43,5 +41,7 @@ void *(*hook_malloc)(size_t) = dlmalloc; * @return new memory, or NULL w/ errno */ void *malloc(size_t n) { - return hook_malloc(n); + return dlmalloc(n); } + +#endif /* __SANITIZE_ADDRESS__ */ diff --git a/libc/mem/malloc_inspect_all.c b/libc/mem/malloc_inspect_all.c index 16b03e266..c6e9468ef 100644 --- a/libc/mem/malloc_inspect_all.c +++ b/libc/mem/malloc_inspect_all.c @@ -19,8 +19,8 @@ #include "libc/mem/mem.h" #include "third_party/dlmalloc/dlmalloc.h" -void malloc_inspect_all(void (*handler)(void* start, void* end, - size_t used_bytes, void* callback_arg), +void malloc_inspect_all(void handler(void* start, void* end, size_t used_bytes, + void* callback_arg), void* arg) { dlmalloc_inspect_all(handler, arg); } diff --git a/libc/mem/malloc_trim.c b/libc/mem/malloc_trim.c index 0165a28a8..3c6f3b474 100644 --- a/libc/mem/malloc_trim.c +++ b/libc/mem/malloc_trim.c @@ -16,11 +16,9 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/mem/hook.internal.h" #include "libc/mem/mem.h" #include "third_party/dlmalloc/dlmalloc.h" - -int (*hook_malloc_trim)(size_t) = dlmalloc_trim; +#ifndef __SANITIZE_ADDRESS__ /** * Releases freed memory back to system. @@ -29,5 +27,7 @@ int (*hook_malloc_trim)(size_t) = dlmalloc_trim; * @return 1 if it actually released any memory, else 0 */ int malloc_trim(size_t n) { - return hook_malloc_trim(n); + return dlmalloc_trim(n); } + +#endif /* __SANITIZE_ADDRESS__ */ diff --git a/libc/mem/malloc_usable_size.c b/libc/mem/malloc_usable_size.c index 2eb1ce555..60b1c738d 100644 --- a/libc/mem/malloc_usable_size.c +++ b/libc/mem/malloc_usable_size.c @@ -16,11 +16,9 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/mem/hook.internal.h" #include "libc/mem/mem.h" #include "third_party/dlmalloc/dlmalloc.h" - -size_t (*hook_malloc_usable_size)(void *) = dlmalloc_usable_size; +#ifndef __SANITIZE_ADDRESS__ /** * Returns the number of bytes you can actually use in @@ -41,5 +39,7 @@ size_t (*hook_malloc_usable_size)(void *) = dlmalloc_usable_size; * @see dlmalloc_usable_size() */ size_t malloc_usable_size(void *p) { - return hook_malloc_usable_size(p); + return dlmalloc_usable_size(p); } + +#endif /* __SANITIZE_ADDRESS__ */ diff --git a/libc/mem/memalign.c b/libc/mem/memalign.c index adc367e81..114048477 100644 --- a/libc/mem/memalign.c +++ b/libc/mem/memalign.c @@ -16,11 +16,9 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/mem/hook.internal.h" #include "libc/mem/mem.h" #include "third_party/dlmalloc/dlmalloc.h" - -void *(*hook_memalign)(size_t, size_t) = dlmemalign; +#ifndef __SANITIZE_ADDRESS__ /** * Allocates aligned memory. @@ -36,5 +34,7 @@ void *(*hook_memalign)(size_t, size_t) = dlmemalign; * @see valloc(), pvalloc() */ void *memalign(size_t align, size_t bytes) { - return hook_memalign(align, bytes); + return dlmemalign(align, bytes); } + +#endif /* __SANITIZE_ADDRESS__ */ 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/realloc.c b/libc/mem/realloc.c index 63481fa80..589ef2bfe 100644 --- a/libc/mem/realloc.c +++ b/libc/mem/realloc.c @@ -16,11 +16,9 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/mem/hook.internal.h" #include "libc/mem/mem.h" #include "third_party/dlmalloc/dlmalloc.h" - -void *(*hook_realloc)(void *, size_t) = dlrealloc; +#ifndef __SANITIZE_ADDRESS__ /** * Allocates / resizes / frees memory, e.g. @@ -61,5 +59,7 @@ void *(*hook_realloc)(void *, size_t) = dlrealloc; * @see dlrealloc() */ void *realloc(void *p, size_t n) { - return hook_realloc(p, n); + return dlrealloc(p, n); } + +#endif /* __SANITIZE_ADDRESS__ */ diff --git a/libc/mem/hook_realloc_in_place.c b/libc/mem/realloc_in_place.c similarity index 94% rename from libc/mem/hook_realloc_in_place.c rename to libc/mem/realloc_in_place.c index 5f47fee8b..514cfd046 100644 --- a/libc/mem/hook_realloc_in_place.c +++ b/libc/mem/realloc_in_place.c @@ -16,11 +16,9 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/mem/hook.internal.h" #include "libc/mem/mem.h" #include "third_party/dlmalloc/dlmalloc.h" - -void *(*hook_realloc_in_place)(void *, size_t) = dlrealloc_in_place; +#ifndef __SANITIZE_ADDRESS__ /** * Resizes the space allocated for p to size n, only if this can be @@ -38,5 +36,7 @@ void *(*hook_realloc_in_place)(void *, size_t) = dlrealloc_in_place; * @see dlrealloc_in_place() */ void *realloc_in_place(void *p, size_t n) { - return hook_realloc_in_place(p, n); + return dlrealloc_in_place(p, n); } + +#endif /* __SANITIZE_ADDRESS__ */ diff --git a/libc/mem/realpath.c b/libc/mem/realpath.c index 3ea1432a5..966921565 100644 --- a/libc/mem/realpath.c +++ b/libc/mem/realpath.c @@ -27,6 +27,7 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/assert.h" #include "libc/calls/calls.h" +#include "libc/dce.h" #include "libc/errno.h" #include "libc/intrin/safemacros.internal.h" #include "libc/limits.h" @@ -41,6 +42,11 @@ __static_yoink("musl_libc_notice"); // clang-format off +static inline int IsAlpha(int c) +{ + return ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z'); +} + static size_t GetSlashLen(const char *s) { const char *s0 = s; @@ -93,6 +99,33 @@ char *realpath(const char *filename, char *resolved) einval(); return 0; } + + /* Normalize windows paths before proceeding. */ + if (IsWindows()) { + int c, i = 0; + + /* Turn backslash into slash. */ + while ((c = *filename++)) { + if (i == PATH_MAX - 1) + goto toolong; + if (c == '\\') + c = '/'; + output[i++] = c; + } + output[i] = 0; + + /* Turn paths like "C:" into "/C" + * Turn paths like "C:/..." into "/C/..." */ + if (IsAlpha(output[0]) && output[1] == ':' && + (!output[2] || output[2] == '/')) { + output[1] = output[0]; + output[0] = '/'; + } + + filename = output; + } + + /* Copy the path and handle ZipOS. */ l = strnlen(filename, sizeof stack); if (!l) { enoent(); @@ -124,8 +157,7 @@ restart: continue; } - z = (char *)min((intptr_t)strchrnul(stack+p, '/'), - (intptr_t)strchrnul(stack+p, '\\')); + z = strchrnul(stack+p, '/'); l0 = l = z-(stack+p); if (!l && !check_dir) break; 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/mem/tinymalloc.inc b/libc/mem/tinymalloc.inc new file mode 100644 index 000000000..3b04b0281 --- /dev/null +++ b/libc/mem/tinymalloc.inc @@ -0,0 +1,170 @@ +// 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/stdalign.internal.h" +#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 malloc */ + +alignas(TINYMALLOC_MAX_ALIGN) static struct { + char memory[TINYMALLOC_MAX_BYTES]; + size_t 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; + size_t base; + if (ptr) { + mem = (char *)ptr; + unassert(isheap(mem)); + base = mem - heap.memory; + *(size_t *)mem = heap.free; + heap.free = base; + } +} + +size_t malloc_usable_size(void *ptr) { + char *mem = (char *)ptr; + unassert(isheap(mem)); + return ((size_t *)mem)[-1]; +} + +void *memalign(size_t align, size_t need) { + char *res; + size_t next, next2, base, toto, *link, *link2; + + // normalize arguments + while (align & (align - 1)) + ++align; + if (need < sizeof(size_t)) + need = sizeof(size_t); + if (align < sizeof(size_t)) + align = sizeof(size_t); + if (align > TINYMALLOC_MAX_ALIGN) + goto InvalidArgument; + // TODO(jart): refactor append*() to not need size_t*2 granularity + if (ckd_add(&need, need, sizeof(size_t) * 2 - 1)) + goto OutOfMemory; + need &= -sizeof(size_t); + + // allocate from free list + next = heap.free; + link = &heap.free; + while (next) { + next2 = *(size_t *)(heap.memory + next); + link2 = (size_t *)(heap.memory + next); + if (need <= ((size_t *)(heap.memory + next))[-1]) { + *link = next2; + return (void *)(heap.memory + next); + } + next = next2; + link = link2; + } + + // allocate new static memory + base = heap.used; + base += sizeof(size_t); + base += align - 1; + base &= -align; + if (ckd_add(&toto, base, need)) + goto OutOfMemory; + if (toto > TINYMALLOC_MAX_BYTES) + goto OutOfMemory; + res = heap.memory + base; + ((size_t *)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; + size_t 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; + size_t base, have, toto; + if (!ptr) { + res = (char *)malloc(need); + } else { + mem = (char *)ptr; + unassert(isheap(mem)); + have = ((size_t *)mem)[-1]; + base = mem - heap.memory; + if (need < have) { + res = mem; + } else if (base == heap.last) { + if (need < sizeof(size_t)) + need = sizeof(size_t); + if (ckd_add(&need, need, sizeof(size_t) - 1)) + goto OutOfMemory; + need &= -sizeof(size_t); + if (ckd_add(&toto, base, need)) + goto OutOfMemory; + if (toto > TINYMALLOC_MAX_BYTES) + goto OutOfMemory; + ((size_t *)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/libc/nexgen32e/gc.S b/libc/nexgen32e/gc.S index 302dcd5a2..6b60ae240 100644 --- a/libc/nexgen32e/gc.S +++ b/libc/nexgen32e/gc.S @@ -66,7 +66,7 @@ __gc: .ftrace2 // if this code fails // check if CosmoTib's size changed - sub x8,x28,#192 // __get_tls() + sub x8,x28,#512 // __get_tls() ldr x9,[x8,0x18] // tib::garbages ldr x10,[x9] // g->i ldr x8,[x9,8] // g->p 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/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/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/nexgen32e/rdtscp.h b/libc/nexgen32e/rdtscp.h index 5bebc8735..ae7d5cf2d 100644 --- a/libc/nexgen32e/rdtscp.h +++ b/libc/nexgen32e/rdtscp.h @@ -5,7 +5,7 @@ #include "libc/nexgen32e/x86feature.h" COSMOPOLITAN_C_START_ -#define TSC_AUX_CORE(MSR) ((MSR) & 0xfff) +#define TSC_AUX_CORE(MSR) ((MSR)&0xfff) #define TSC_AUX_NODE(MSR) (((MSR) >> 12) & 0xfff) /** @@ -25,7 +25,8 @@ COSMOPOLITAN_C_START_ : /* no inputs */ \ : "memory"); \ EcxOut = (OPT_OUT_IA32_TSC_AUX); \ - if (EcxOut) *EcxOut = Ecx; \ + if (EcxOut) \ + *EcxOut = Ecx; \ Rdx << 32 | Rax; \ }) diff --git a/libc/nt/enum/consolemodeflags.h b/libc/nt/enum/consolemodeflags.h index a0d8bed14..595114cce 100644 --- a/libc/nt/enum/consolemodeflags.h +++ b/libc/nt/enum/consolemodeflags.h @@ -2,22 +2,22 @@ #define COSMOPOLITAN_LIBC_NT_ENUM_CONSOLEMODEFLAGS_H_ /* input mode */ -#define kNtEnableProcessedInput 0x0001u -#define kNtEnableLineInput 0x0002u -#define kNtEnableEchoInput 0x0004u -#define kNtEnableWindowInput 0x0008u -#define kNtEnableMouseInput 0x0010u -#define kNtEnableInsertMode 0x0020u -#define kNtEnableQuickEditMode 0x0040u -#define kNtEnableExtendedFlags 0x0080u -#define kNtEnableAutoPosition 0x0100u +#define kNtEnableProcessedInput 0x0001u +#define kNtEnableLineInput 0x0002u +#define kNtEnableEchoInput 0x0004u +#define kNtEnableWindowInput 0x0008u +#define kNtEnableMouseInput 0x0010u +#define kNtEnableInsertMode 0x0020u +#define kNtEnableQuickEditMode 0x0040u +#define kNtEnableExtendedFlags 0x0080u +#define kNtEnableAutoPosition 0x0100u #define kNtEnableVirtualTerminalInput 0x0200u /* output mode */ -#define kNtEnableProcessedOutput 0x0001u -#define kNtEnableWrapAtEolOutput 0x0002u +#define kNtEnableProcessedOutput 0x0001u +#define kNtEnableWrapAtEolOutput 0x0002u #define kNtEnableVirtualTerminalProcessing 0x0004u -#define kNtDisableNewlineAutoReturn 0x0008u -#define kNtEnableLvbGridWorldwide 0x0010u +#define kNtDisableNewlineAutoReturn 0x0008u +#define kNtEnableLvbGridWorldwide 0x0010u #endif /* COSMOPOLITAN_LIBC_NT_ENUM_CONSOLEMODEFLAGS_H_ */ diff --git a/libc/nt/enum/consoleselectionflags.h b/libc/nt/enum/consoleselectionflags.h index 75e069d19..4b74e9f2d 100644 --- a/libc/nt/enum/consoleselectionflags.h +++ b/libc/nt/enum/consoleselectionflags.h @@ -1,10 +1,10 @@ #ifndef COSMOPOLITAN_LIBC_NT_ENUM_CONSOLESELECTIONFLAGS_H_ #define COSMOPOLITAN_LIBC_NT_ENUM_CONSOLESELECTIONFLAGS_H_ -#define kNtConsoleNoSelection 0x0000u +#define kNtConsoleNoSelection 0x0000u #define kNtConsoleSelectionInProgress 0x0001u -#define kNtConsoleSelectionNotEmpty 0x0002u -#define kNtConsoleMouseSelection 0x0004u -#define kNtConsoleMouseDown 0x0008u +#define kNtConsoleSelectionNotEmpty 0x0002u +#define kNtConsoleMouseSelection 0x0004u +#define kNtConsoleMouseDown 0x0008u #endif /* COSMOPOLITAN_LIBC_NT_ENUM_CONSOLESELECTIONFLAGS_H_ */ diff --git a/libc/nt/enum/creationdisposition.h b/libc/nt/enum/creationdisposition.h index 989ed19f2..dc4c83258 100644 --- a/libc/nt/enum/creationdisposition.h +++ b/libc/nt/enum/creationdisposition.h @@ -1,10 +1,10 @@ #ifndef COSMOPOLITAN_LIBC_NT_ENUM_CREATIONDISPOSITION_H_ #define COSMOPOLITAN_LIBC_NT_ENUM_CREATIONDISPOSITION_H_ -#define kNtCreateNew 1 -#define kNtCreateAlways 2 -#define kNtOpenExisting 3 -#define kNtOpenAlways 4 +#define kNtCreateNew 1 +#define kNtCreateAlways 2 +#define kNtOpenExisting 3 +#define kNtOpenAlways 4 #define kNtTruncateExisting 5 #endif /* COSMOPOLITAN_LIBC_NT_ENUM_CREATIONDISPOSITION_H_ */ diff --git a/libc/nt/enum/ctrlevent.h b/libc/nt/enum/ctrlevent.h index 98bd348d3..0d04ac011 100644 --- a/libc/nt/enum/ctrlevent.h +++ b/libc/nt/enum/ctrlevent.h @@ -1,10 +1,10 @@ #ifndef COSMOPOLITAN_LIBC_NT_ENUM_CTRLEVENT_H_ #define COSMOPOLITAN_LIBC_NT_ENUM_CTRLEVENT_H_ -#define kNtCtrlCEvent 0 /* SIGINT */ -#define kNtCtrlBreakEvent 1 /* SIGQUIT */ -#define kNtCtrlCloseEvent 2 /* SIGHUP */ -#define kNtCtrlLogoffEvent 5 /* SIGTERM */ +#define kNtCtrlCEvent 0 /* SIGINT */ +#define kNtCtrlBreakEvent 1 /* SIGQUIT */ +#define kNtCtrlCloseEvent 2 /* SIGHUP */ +#define kNtCtrlLogoffEvent 5 /* SIGTERM */ #define kNtCtrlShutdownEvent 6 #endif /* COSMOPOLITAN_LIBC_NT_ENUM_CTRLEVENT_H_ */ diff --git a/libc/nt/enum/exceptionhandleractions.h b/libc/nt/enum/exceptionhandleractions.h index 15358f41a..7f6c84f8d 100644 --- a/libc/nt/enum/exceptionhandleractions.h +++ b/libc/nt/enum/exceptionhandleractions.h @@ -1,8 +1,8 @@ #ifndef COSMOPOLITAN_LIBC_NT_ENUM_EXCEPTIONHANDLERACTIONS_H_ #define COSMOPOLITAN_LIBC_NT_ENUM_EXCEPTIONHANDLERACTIONS_H_ -#define kNtExceptionExecuteHandler 0x1u +#define kNtExceptionExecuteHandler 0x1u #define kNtExceptionContinueExecution 0xffffffffu -#define kNtExceptionContinueSearch 0x0u +#define kNtExceptionContinueSearch 0x0u #endif /* COSMOPOLITAN_LIBC_NT_ENUM_EXCEPTIONHANDLERACTIONS_H_ */ diff --git a/libc/nt/enum/fileinformationclass.h b/libc/nt/enum/fileinformationclass.h index 2035ddd13..74b2df676 100644 --- a/libc/nt/enum/fileinformationclass.h +++ b/libc/nt/enum/fileinformationclass.h @@ -1,46 +1,46 @@ #ifndef COSMOPOLITAN_LIBC_NT_ENUM_FILEINFORMATIONCLASS_H_ #define COSMOPOLITAN_LIBC_NT_ENUM_FILEINFORMATIONCLASS_H_ -#define kNtFileDirectoryInformation 1 /*→ struct NtFileDirectoryInformation */ -#define kNtFileFullDirectoryInformation 2 /*→ etc. */ -#define kNtFileBothDirectoryInformation 3 -#define kNtFileBasicInformation 4 -#define kNtFileStandardInformation 5 -#define kNtFileInternalInformation 6 -#define kNtFileEaInformation 7 -#define kNtFileAccessInformation 8 -#define kNtFileNameInformation 9 -#define kNtFileRenameInformation 10 -#define kNtFileLinkInformation 11 -#define kNtFileNamesInformation 12 -#define kNtFileDispositionInformation 13 -#define kNtFilePositionInformation 14 -#define kNtFileFullEaInformation 15 -#define kNtFileModeInformation 16 -#define kNtFileAlignmentInformation 17 -#define kNtFileAllInformation 18 -#define kNtFileAllocationInformation 19 -#define kNtFileEndOfFileInformation 20 -#define kNtFileAlternateNameInformation 21 -#define kNtFileStreamInformation 22 -#define kNtFilePipeInformation 23 -#define kNtFilePipeLocalInformation 24 -#define kNtFilePipeRemoteInformation 25 -#define kNtFileMailslotQueryInformation 26 -#define kNtFileMailslotSetInformation 27 -#define kNtFileCompressionInformation 28 -#define kNtFileObjectIdInformation 29 -#define kNtFileCompletionInformation 30 -#define kNtFileMoveClusterInformation 31 -#define kNtFileQuotaInformation 32 -#define kNtFileReparsePointInformation 33 -#define kNtFileNetworkOpenInformation 34 -#define kNtFileAttributeTagInformation 35 -#define kNtFileTrackingInformation 36 +#define kNtFileDirectoryInformation 1 /*→ struct NtFileDirectoryInformation */ +#define kNtFileFullDirectoryInformation 2 /*→ etc. */ +#define kNtFileBothDirectoryInformation 3 +#define kNtFileBasicInformation 4 +#define kNtFileStandardInformation 5 +#define kNtFileInternalInformation 6 +#define kNtFileEaInformation 7 +#define kNtFileAccessInformation 8 +#define kNtFileNameInformation 9 +#define kNtFileRenameInformation 10 +#define kNtFileLinkInformation 11 +#define kNtFileNamesInformation 12 +#define kNtFileDispositionInformation 13 +#define kNtFilePositionInformation 14 +#define kNtFileFullEaInformation 15 +#define kNtFileModeInformation 16 +#define kNtFileAlignmentInformation 17 +#define kNtFileAllInformation 18 +#define kNtFileAllocationInformation 19 +#define kNtFileEndOfFileInformation 20 +#define kNtFileAlternateNameInformation 21 +#define kNtFileStreamInformation 22 +#define kNtFilePipeInformation 23 +#define kNtFilePipeLocalInformation 24 +#define kNtFilePipeRemoteInformation 25 +#define kNtFileMailslotQueryInformation 26 +#define kNtFileMailslotSetInformation 27 +#define kNtFileCompressionInformation 28 +#define kNtFileObjectIdInformation 29 +#define kNtFileCompletionInformation 30 +#define kNtFileMoveClusterInformation 31 +#define kNtFileQuotaInformation 32 +#define kNtFileReparsePointInformation 33 +#define kNtFileNetworkOpenInformation 34 +#define kNtFileAttributeTagInformation 35 +#define kNtFileTrackingInformation 36 #define kNtFileIdBothDirectoryInformation 37 #define kNtFileIdFullDirectoryInformation 38 #define kNtFileValidDataLengthInformation 39 -#define kNtFileShortNameInformation 40 -#define kNtFileInformation_MAX 40 +#define kNtFileShortNameInformation 40 +#define kNtFileInformation_MAX 40 #endif /* COSMOPOLITAN_LIBC_NT_ENUM_FILEINFORMATIONCLASS_H_ */ diff --git a/libc/nt/enum/filesharemode.h b/libc/nt/enum/filesharemode.h index b28510bac..4efb897db 100644 --- a/libc/nt/enum/filesharemode.h +++ b/libc/nt/enum/filesharemode.h @@ -2,8 +2,8 @@ #define COSMOPOLITAN_LIBC_NT_ENUM_FILESHAREFLAGS_H_ #define kNtFileShareExclusive 0x00000000u -#define kNtFileShareRead 0x00000001u -#define kNtFileShareWrite 0x00000002u -#define kNtFileShareDelete 0x00000004u +#define kNtFileShareRead 0x00000001u +#define kNtFileShareWrite 0x00000002u +#define kNtFileShareDelete 0x00000004u #endif /* COSMOPOLITAN_LIBC_NT_ENUM_FILESHAREFLAGS_H_ */ diff --git a/libc/nt/enum/fillattribute.h b/libc/nt/enum/fillattribute.h index 02ec2f51e..f98079cec 100644 --- a/libc/nt/enum/fillattribute.h +++ b/libc/nt/enum/fillattribute.h @@ -1,13 +1,13 @@ #ifndef COSMOPOLITAN_LIBC_NT_NTFILLATTRIBUTE_H_ #define COSMOPOLITAN_LIBC_NT_NTFILLATTRIBUTE_H_ -#define kNtForegroundBlue 0x0001 -#define kNtForegroundGreen 0x0002 -#define kNtForegroundRed 0x0004 +#define kNtForegroundBlue 0x0001 +#define kNtForegroundGreen 0x0002 +#define kNtForegroundRed 0x0004 #define kNtForegroundIntensity 0x0008 -#define kNtBackgroundBlue 0x0010 -#define kNtBackgroundGreen 0x0020 -#define kNtBackgroundRed 0x0040 +#define kNtBackgroundBlue 0x0010 +#define kNtBackgroundGreen 0x0020 +#define kNtBackgroundRed 0x0040 #define kNtBackgroundIntensity 0x0080 #endif /* COSMOPOLITAN_LIBC_NT_NTFILLATTRIBUTE_H_ */ diff --git a/libc/nt/enum/fsinformationclass.h b/libc/nt/enum/fsinformationclass.h index f32a702ca..3a1e93849 100644 --- a/libc/nt/enum/fsinformationclass.h +++ b/libc/nt/enum/fsinformationclass.h @@ -1,15 +1,15 @@ #ifndef COSMOPOLITAN_LIBC_NT_ENUM_FSINFORMATIONCLASS_H_ #define COSMOPOLITAN_LIBC_NT_ENUM_FSINFORMATIONCLASS_H_ -#define kNtFileFsVolumeInformation 1 -#define kNtFileFsLabelInformation 2 -#define kNtFileFsSizeInformation 3 -#define kNtFileFsDeviceInformation 4 -#define kNtFileFsAttributeInformation 5 -#define kNtFileFsControlInformation 6 -#define kNtFileFsFullSizeInformation 7 -#define kNtFileFsObjectIdInformation 8 +#define kNtFileFsVolumeInformation 1 +#define kNtFileFsLabelInformation 2 +#define kNtFileFsSizeInformation 3 +#define kNtFileFsDeviceInformation 4 +#define kNtFileFsAttributeInformation 5 +#define kNtFileFsControlInformation 6 +#define kNtFileFsFullSizeInformation 7 +#define kNtFileFsObjectIdInformation 8 #define kNtFileFsDriverPathInformation 9 -#define kNtFileFsInformation_MAX 10 +#define kNtFileFsInformation_MAX 10 #endif /* COSMOPOLITAN_LIBC_NT_ENUM_FSINFORMATIONCLASS_H_ */ diff --git a/libc/nt/enum/kwaitreason.h b/libc/nt/enum/kwaitreason.h index 04d1a8b75..df254f832 100644 --- a/libc/nt/enum/kwaitreason.h +++ b/libc/nt/enum/kwaitreason.h @@ -1,33 +1,33 @@ #ifndef COSMOPOLITAN_LIBC_NT_ENUM_KWAITREASON_H_ #define COSMOPOLITAN_LIBC_NT_ENUM_KWAITREASON_H_ -#define kNtExecutive 0 -#define kNtFreePage 1 -#define kNtPageIn 2 -#define kNtPoolAllocation 3 -#define kNtDelayExecution 4 -#define kNtSuspended 5 -#define kNtUserRequest 6 -#define kNtWrExecutive 7 -#define kNtWrFreePage 8 -#define kNtWrPageIn 9 -#define kNtWrPoolAllocation 10 -#define kNtWrDelayExecution 11 -#define kNtWrSuspended 12 -#define kNtWrUserRequest 13 -#define kNtWrEventPair 14 -#define kNtWrQueue 15 -#define kNtWrLpcReceive 16 -#define kNtWrLpcReply 17 -#define kNtWrVirtualMemory 18 -#define kNtWrPageOut 19 -#define kNtWrRendezvous 20 -#define kNtSpare2 21 -#define kNtSpare3 22 -#define kNtSpare4 23 -#define kNtSpare5 24 -#define kNtSpare6 25 -#define kNtWrKernel 26 +#define kNtExecutive 0 +#define kNtFreePage 1 +#define kNtPageIn 2 +#define kNtPoolAllocation 3 +#define kNtDelayExecution 4 +#define kNtSuspended 5 +#define kNtUserRequest 6 +#define kNtWrExecutive 7 +#define kNtWrFreePage 8 +#define kNtWrPageIn 9 +#define kNtWrPoolAllocation 10 +#define kNtWrDelayExecution 11 +#define kNtWrSuspended 12 +#define kNtWrUserRequest 13 +#define kNtWrEventPair 14 +#define kNtWrQueue 15 +#define kNtWrLpcReceive 16 +#define kNtWrLpcReply 17 +#define kNtWrVirtualMemory 18 +#define kNtWrPageOut 19 +#define kNtWrRendezvous 20 +#define kNtSpare2 21 +#define kNtSpare3 22 +#define kNtSpare4 23 +#define kNtSpare5 24 +#define kNtSpare6 25 +#define kNtWrKernel 26 #define kNtMaximumWaitReason 27 #endif /* COSMOPOLITAN_LIBC_NT_ENUM_KWAITREASON_H_ */ diff --git a/libc/nt/enum/memflags.h b/libc/nt/enum/memflags.h index 033d3fa3c..fffb09ef9 100644 --- a/libc/nt/enum/memflags.h +++ b/libc/nt/enum/memflags.h @@ -16,4 +16,6 @@ #define kNtMemLargePages 0x20000000 #define kNtMem4mbPages 0x80000000 +#define kNtMemReplacePlaceholder 0x00004000 + #endif /* COSMOPOLITAN_LIBC_NT_ENUM_MEMFLAGS_H_ */ diff --git a/libc/nt/enum/processaccess.h b/libc/nt/enum/processaccess.h index 2844f7132..81ec68fe2 100644 --- a/libc/nt/enum/processaccess.h +++ b/libc/nt/enum/processaccess.h @@ -2,19 +2,19 @@ #define COSMOPOLITAN_LIBC_NT_ENUM_PROCESSACCESS_H_ #include "libc/nt/enum/accessmask.h" -#define kNtProcessCreateProcess 0x0080u -#define kNtProcessCreateThread 0x0002u -#define kNtProcessDupHandle 0x0040u -#define kNtProcessQueryInformation 0x0400u +#define kNtProcessCreateProcess 0x0080u +#define kNtProcessCreateThread 0x0002u +#define kNtProcessDupHandle 0x0040u +#define kNtProcessQueryInformation 0x0400u #define kNtProcessQueryLimitedInformation 0x1000u -#define kNtProcessSetInformation 0x0200u -#define kNtProcessSetQuota 0x0100u -#define kNtProcessSuspendResume 0x0800u -#define kNtProcessTerminate 0x0001u -#define kNtProcessVmOperation 0x0008u -#define kNtProcessVmRead 0x0010u -#define kNtProcessVmWrite 0x0020u -#define kNtProcessSynchronize kNtSynchronize +#define kNtProcessSetInformation 0x0200u +#define kNtProcessSetQuota 0x0100u +#define kNtProcessSuspendResume 0x0800u +#define kNtProcessTerminate 0x0001u +#define kNtProcessVmOperation 0x0008u +#define kNtProcessVmRead 0x0010u +#define kNtProcessVmWrite 0x0020u +#define kNtProcessSynchronize kNtSynchronize #define kNtProcessAllAccess \ (kNtStandardRightsRequired | kNtSynchronize | 0xffffu) diff --git a/libc/nt/enum/procthreadattributes.h b/libc/nt/enum/procthreadattributes.h index 939f24e9c..84027c3e4 100644 --- a/libc/nt/enum/procthreadattributes.h +++ b/libc/nt/enum/procthreadattributes.h @@ -2,6 +2,6 @@ #define COSMOPOLITAN_LIBC_NT_ENUM_PROCTHREADATTRIBUTES_H_ #define kNtProcThreadAttributeReplaceValue 1 -#define kNtProcThreadAttributeHandleList 0x00020002 +#define kNtProcThreadAttributeHandleList 0x00020002 #endif /* COSMOPOLITAN_LIBC_NT_ENUM_PROCTHREADATTRIBUTES_H_ */ diff --git a/libc/nt/enum/securityinformation.h b/libc/nt/enum/securityinformation.h index 0fbd2d41d..dd5d6c242 100644 --- a/libc/nt/enum/securityinformation.h +++ b/libc/nt/enum/securityinformation.h @@ -1,19 +1,19 @@ #ifndef COSMOPOLITAN_LIBC_NT_ENUM_SECURITYINFORMATION_H_ #define COSMOPOLITAN_LIBC_NT_ENUM_SECURITYINFORMATION_H_ -#define kNtOwnerSecurityInformation 0x00000001 -#define kNtGroupSecurityInformation 0x00000002 -#define kNtDaclSecurityInformation 0x00000004 -#define kNtSaclSecurityInformation 0x00000008 -#define kNtLabelSecurityInformation 0x00000010 -#define kNtAttributeSecurityInformation 0x00000020 -#define kNtScopeSecurityInformation 0x00000040 +#define kNtOwnerSecurityInformation 0x00000001 +#define kNtGroupSecurityInformation 0x00000002 +#define kNtDaclSecurityInformation 0x00000004 +#define kNtSaclSecurityInformation 0x00000008 +#define kNtLabelSecurityInformation 0x00000010 +#define kNtAttributeSecurityInformation 0x00000020 +#define kNtScopeSecurityInformation 0x00000040 #define kNtProcessTrustLabelSecurityInformation 0x00000080 -#define kNtAccessFilterSecurityInformation 0x00000100 -#define kNtBackupSecurityInformation 0x00010000 -#define kNtProtectedDaclSecurityInformation 0x80000000 -#define kNtProtectedSaclSecurityInformation 0x40000000 -#define kNtUnprotectedDaclSecurityInformation 0x20000000 -#define kNtUnprotectedSaclSecurityInformation 0x10000000 +#define kNtAccessFilterSecurityInformation 0x00000100 +#define kNtBackupSecurityInformation 0x00010000 +#define kNtProtectedDaclSecurityInformation 0x80000000 +#define kNtProtectedSaclSecurityInformation 0x40000000 +#define kNtUnprotectedDaclSecurityInformation 0x20000000 +#define kNtUnprotectedSaclSecurityInformation 0x10000000 #endif /* COSMOPOLITAN_LIBC_NT_ENUM_SECURITYINFORMATION_H_ */ diff --git a/libc/nt/enum/startf.h b/libc/nt/enum/startf.h index 5464f50a5..ece5f2ce8 100644 --- a/libc/nt/enum/startf.h +++ b/libc/nt/enum/startf.h @@ -1,19 +1,19 @@ #ifndef COSMOPOLITAN_LIBC_NT_ENUM_STARTF_H_ #define COSMOPOLITAN_LIBC_NT_ENUM_STARTF_H_ -#define kNtStartfUseshowwindow 0x00000001 /* otherwise wShowWindow ignored */ -#define kNtStartfUsesize 0x00000002 /* otherwise dwX / dwY ignored */ -#define kNtStartfUseposition 0x00000004 /* otherwise dwX/YSize ignored */ -#define kNtStartfUsecountchars 0x00000008 /* otherwise dwX/YCountChars ign. */ +#define kNtStartfUseshowwindow 0x00000001 /* otherwise wShowWindow ignored */ +#define kNtStartfUsesize 0x00000002 /* otherwise dwX / dwY ignored */ +#define kNtStartfUseposition 0x00000004 /* otherwise dwX/YSize ignored */ +#define kNtStartfUsecountchars 0x00000008 /* otherwise dwX/YCountChars ign. */ #define kNtStartfUsefillattribute 0x00000010 /* etc. */ -#define kNtStartfRunfullscreen 0x00000020 -#define kNtStartfForceonfeedback 0x00000040 +#define kNtStartfRunfullscreen 0x00000020 +#define kNtStartfForceonfeedback 0x00000040 #define kNtStartfForceofffeedback 0x00000080 -#define kNtStartfUsestdhandles 0x00000100 /* otherwise hStd... ignored */ -#define kNtStartfUsehotkey 0x00000200 -#define kNtStartfTitleislinkname 0x00000800 -#define kNtStartfTitleisappid 0x00001000 -#define kNtStartfPreventpinning 0x00002000 -#define kNtStartfUntrustedsource 0x00008000 +#define kNtStartfUsestdhandles 0x00000100 /* otherwise hStd... ignored */ +#define kNtStartfUsehotkey 0x00000200 +#define kNtStartfTitleislinkname 0x00000800 +#define kNtStartfTitleisappid 0x00001000 +#define kNtStartfPreventpinning 0x00002000 +#define kNtStartfUntrustedsource 0x00008000 #endif /* COSMOPOLITAN_LIBC_NT_ENUM_STARTF_H_ */ diff --git a/libc/nt/enum/systeminformationclass.h b/libc/nt/enum/systeminformationclass.h index eab431b18..1749f9f9b 100644 --- a/libc/nt/enum/systeminformationclass.h +++ b/libc/nt/enum/systeminformationclass.h @@ -1,20 +1,20 @@ #ifndef COSMOPOLITAN_LIBC_NT_ENUM_SYSTEMINFORMATIONCLASS_H_ #define COSMOPOLITAN_LIBC_NT_ENUM_SYSTEMINFORMATIONCLASS_H_ -#define kNtSystemBasicInformation 0 -#define kNtSystemProcessorInformation 1 -#define kNtSystemPerformanceInformation 2 -#define kNtSystemTimeOfDayInformation 3 -#define kNtSystemProcessInformation 5 -#define kNtSystemProcessorTimes 8 -#define kNtSystemGlobalFlag 9 -#define kNtSystemModuleInformation 11 -#define kNtSystemLockInformation 12 -#define kNtSystemHandleInformation 16 -#define kNtSystemObjectInformation 17 -#define kNtSystemInterruptInformation 23 -#define kNtSystemExceptionInformation 33 +#define kNtSystemBasicInformation 0 +#define kNtSystemProcessorInformation 1 +#define kNtSystemPerformanceInformation 2 +#define kNtSystemTimeOfDayInformation 3 +#define kNtSystemProcessInformation 5 +#define kNtSystemProcessorTimes 8 +#define kNtSystemGlobalFlag 9 +#define kNtSystemModuleInformation 11 +#define kNtSystemLockInformation 12 +#define kNtSystemHandleInformation 16 +#define kNtSystemObjectInformation 17 +#define kNtSystemInterruptInformation 23 +#define kNtSystemExceptionInformation 33 #define kNtSystemRegistryQuotaInformation 37 -#define kNtSystemLookasideInformation 45 +#define kNtSystemLookasideInformation 45 #endif /* COSMOPOLITAN_LIBC_NT_ENUM_SYSTEMINFORMATIONCLASS_H_ */ diff --git a/libc/nt/enum/threadaccess.h b/libc/nt/enum/threadaccess.h index d2d4c0027..45ad624ec 100644 --- a/libc/nt/enum/threadaccess.h +++ b/libc/nt/enum/threadaccess.h @@ -2,18 +2,18 @@ #define COSMOPOLITAN_LIBC_NT_ENUM_THREADACCESS_H_ #include "libc/nt/enum/accessmask.h" -#define kNtThreadTerminate 0x0001 -#define kNtThreadSuspendResume 0x0002 -#define kNtThreadGetContext 0x0008 -#define kNtThreadSetContext 0x0010 -#define kNtThreadQueryInformation 0x0040 -#define kNtThreadSetInformation 0x0020 -#define kNtThreadSetThreadToken 0x0080 -#define kNtThreadImpersonate 0x0100 -#define kNtThreadDirectImpersonation 0x0200 -#define kNtThreadSetLimitedInformation 0x0400 +#define kNtThreadTerminate 0x0001 +#define kNtThreadSuspendResume 0x0002 +#define kNtThreadGetContext 0x0008 +#define kNtThreadSetContext 0x0010 +#define kNtThreadQueryInformation 0x0040 +#define kNtThreadSetInformation 0x0020 +#define kNtThreadSetThreadToken 0x0080 +#define kNtThreadImpersonate 0x0100 +#define kNtThreadDirectImpersonation 0x0200 +#define kNtThreadSetLimitedInformation 0x0400 #define kNtThreadQueryLimitedInformation 0x0800 -#define kNtThreadResume 0x1000 -#define kNtThreadAllAccess (kNtStandardRightsRequired | kNtSynchronize | 0xFFFF) +#define kNtThreadResume 0x1000 +#define kNtThreadAllAccess (kNtStandardRightsRequired | kNtSynchronize | 0xFFFF) #endif /* COSMOPOLITAN_LIBC_NT_ENUM_THREADACCESS_H_ */ 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/enum/tokeninformationclass.h b/libc/nt/enum/tokeninformationclass.h index b2e181eec..b3c37a93a 100644 --- a/libc/nt/enum/tokeninformationclass.h +++ b/libc/nt/enum/tokeninformationclass.h @@ -1,23 +1,23 @@ #ifndef COSMOPOLITAN_LIBC_NT_ENUM_TOKENINFORMATIONCLASS_H_ #define COSMOPOLITAN_LIBC_NT_ENUM_TOKENINFORMATIONCLASS_H_ -#define kNtTokenUser 1 -#define kNtTokenGroups 2 -#define kNtTokenPrivileges 3 -#define kNtTokenOwner 4 -#define kNtTokenPrimaryGroup 5 -#define kNtTokenDefaultDacl 6 -#define kNtTokenSource 7 -#define kNtTokenType 8 -#define kNtTokenImpersonationLevel 9 -#define kNtTokenStatistics 10 -#define kNtTokenRestrictedSids 11 -#define kNtTokenSessionId 12 +#define kNtTokenUser 1 +#define kNtTokenGroups 2 +#define kNtTokenPrivileges 3 +#define kNtTokenOwner 4 +#define kNtTokenPrimaryGroup 5 +#define kNtTokenDefaultDacl 6 +#define kNtTokenSource 7 +#define kNtTokenType 8 +#define kNtTokenImpersonationLevel 9 +#define kNtTokenStatistics 10 +#define kNtTokenRestrictedSids 11 +#define kNtTokenSessionId 12 #define kNtTokenGroupsAndPrivileges 13 -#define kNtTokenSessionReference 14 -#define kNtTokenSandBoxInert 15 -#define kNtTokenAuditPolicy 16 -#define kNtTokenOrigin 17 -#define kNtTokenInfoClass_MAX 18 +#define kNtTokenSessionReference 14 +#define kNtTokenSandBoxInert 15 +#define kNtTokenAuditPolicy 16 +#define kNtTokenOrigin 17 +#define kNtTokenInfoClass_MAX 18 #endif /* COSMOPOLITAN_LIBC_NT_ENUM_TOKENINFORMATIONCLASS_H_ */ diff --git a/libc/nt/enum/version.h b/libc/nt/enum/version.h deleted file mode 100644 index f7201d81e..000000000 --- a/libc/nt/enum/version.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_NT_ENUM_VERSION_H_ -#define COSMOPOLITAN_LIBC_NT_ENUM_VERSION_H_ - -/** - * Known versions of the New Technology executive. - * @see IsAtLeastWindows10() - * @see NtGetVersion() - */ -#define kNtVersionWindows10 0x0a00 -#define kNtVersionWindows81 0x0603 -#define kNtVersionWindows8 0x0602 -#define kNtVersionWindows7 0x0601 -#define kNtVersionWindowsVista 0x0600 /* intended baseline */ -#define kNtVersionWindowsXp64 0x0502 /* end of the road */ -#define kNtVersionWindowsXp 0x0501 /* snowball's chance */ -#define kNtVersionWindows2000 0x0500 /* the golden age */ -#define kNtVersionFuture 0x0b00 - -#endif /* COSMOPOLITAN_LIBC_NT_ENUM_VERSION_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/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/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 5529622ea..21a07cdcd 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 @@ -203,6 +205,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 @@ -293,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 68ac1ef83..bfd662e2d 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,25 @@ 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); + +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() */ 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/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_ */ diff --git a/libc/nt/struct/ntexceptionrecord.h b/libc/nt/struct/ntexceptionrecord.h index 08fad0ad1..bb11104a0 100644 --- a/libc/nt/struct/ntexceptionrecord.h +++ b/libc/nt/struct/ntexceptionrecord.h @@ -4,7 +4,6 @@ #define kNtExceptionMaximumParameters 15 #define kNtExceptionNoncontinuable 1 - struct NtExceptionRecord { uint32_t ExceptionCode; /* kNtException... */ uint32_t ExceptionFlags; /* kNtExceptionNoncontinuable */ diff --git a/libc/nt/struct/osversioninfo.h b/libc/nt/struct/osversioninfo.h deleted file mode 100644 index 5268cecfd..000000000 --- a/libc/nt/struct/osversioninfo.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_NT_STRUCT_OSVERSIONINFO_H_ -#define COSMOPOLITAN_LIBC_NT_STRUCT_OSVERSIONINFO_H_ -COSMOPOLITAN_C_START_ - -struct NtOsVersionInfo { - uint32_t dwOSVersionInfoSize; - uint32_t dwMajorVersion; - uint32_t dwMinorVersion; - uint32_t dwBuildNumber; - uint32_t dwPlatformId; - char16_t szCSDVersion[128]; - uint16_t wServicePackMajor; - uint16_t wServicePackMinor; - uint16_t wSuiteMask; - uint8_t wProductType; - uint8_t wReserved; -}; - -COSMOPOLITAN_C_END_ -#endif /* COSMOPOLITAN_LIBC_NT_STRUCT_OSVERSIONINFO_H_ */ diff --git a/libc/nt/struct/peb.h b/libc/nt/struct/peb.h deleted file mode 100644 index ba7623938..000000000 --- a/libc/nt/struct/peb.h +++ /dev/null @@ -1,94 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_NT_STRUCT_PEB_H_ -#define COSMOPOLITAN_LIBC_NT_STRUCT_PEB_H_ -#include "libc/nt/struct/ldr.h" -#include "libc/nt/struct/unicodestring.h" - -struct NtPeb { - union { - struct { - unsigned char InheritedAddressSpace; - unsigned char ReadImageFileExecOptions; - unsigned char BeingDebugged; - unsigned char __wut1; - }; - uint64_t __wut2; - }; - uint64_t Mutant; - uint64_t ImageBaseAddress; - struct NtLdr *Ldr; - uint64_t ProcessParameters; - uint64_t SubSystemData; - uint64_t ProcessHeap; - uint64_t FastPebLock; - uint64_t __wut3; - uint64_t __wut4; - uint64_t __wut5; - union { - uint64_t KernelCallbackTable; - uint64_t UserSharedInfoPtr; - }; - uint32_t SystemReserved; - uint32_t __wut6; - uint64_t __wut7; - uint64_t TlsExpansionCounter; - uint64_t TlsBitmap; - uint32_t TlsBitmapBits[2]; - uint64_t ReadOnlySharedMemoryBase; - uint64_t __wut8; - uint64_t ReadOnlyStaticServerData; - uint64_t AnsiCodePageData; - uint64_t OemCodePageData; - uint64_t UnicodeCaseTableData; - uint32_t NumberOfProcessors; -#ifdef __x86_64__ - uint32_t NtGlobalFlag; -#else - uint64_t NtGlobalFlag; -#endif - int64_t CriticalSectionTimeout; - uint64_t HeapSegmentReserve; - uint64_t HeapSegmentCommit; - uint64_t HeapDeCommitTotalFreeThreshold; - uint64_t HeapDeCommitFreeBlockThreshold; - uint32_t NumberOfHeaps; - uint32_t MaximumNumberOfHeaps; - uint64_t ProcessHeaps; - uint64_t GdiSharedHandleTable; - uint64_t ProcessStarterHelper; - uint64_t GdiDCAttributeList; - uint64_t LoaderLock; - union { - struct { - uint32_t OSMajorVersion; - uint32_t OSMinorVersion; - }; - uint64_t OSVersion; - }; - uint16_t OSBuildNumber; - uint16_t OSCSDVersion; - uint32_t OSPlatformId; - uint32_t ImageSubsystem; - uint32_t ImageSubsystemMajorVersion; - uint64_t ImageSubsystemMinorVersion; - union { - uint64_t ImageProcessAffinityMask; - uint64_t ActiveProcessAffinityMask; - }; - uint64_t GdiHandleBuffer[38 - __SIZEOF_POINTER__]; - uint64_t PostProcessInitRoutine; - uint64_t TlsExpansionBitmap; - uint32_t TlsExpansionBitmapBits[32]; - uint64_t SessionId; - uint64_t AppCompatFlags; - uint64_t AppCompatFlagsUser; - uint64_t pShimData; - uint64_t AppCompatInfo; - struct NtUnicodeString CSDVersion; - uint64_t ActivationContextData; - uint64_t ProcessAssemblyStorageMap; - uint64_t SystemDefaultActivationContextData; - uint64_t SystemAssemblyStorageMap; - uint64_t MinimumStackCommit; -}; - -#endif /* COSMOPOLITAN_LIBC_NT_STRUCT_PEB_H_ */ diff --git a/libc/nt/struct/teb.h b/libc/nt/struct/teb.h deleted file mode 100644 index d7ee6f649..000000000 --- a/libc/nt/struct/teb.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_NT_TEB_H_ -#define COSMOPOLITAN_LIBC_NT_TEB_H_ -#include "libc/nt/struct/peb.h" -#ifdef __GNUC__ - -/* - * These macros address directly into NT's TEB a.k.a. TIB - * Any function that does this needs the `dontasan` keyword - */ -#define NtGetPeb() ((__seg_gs struct NtPeb *)0x60) -#define NtGetTeb() ((void *)*(__seg_gs uintptr_t *)0x30) -#define NtGetPid() (*(__seg_gs uint32_t *)0x40) -#define NtGetTid() (*(__seg_gs uint32_t *)0x48) -#define NtGetErr() (*(__seg_gs int *)0x68) -#define _NtGetSeh() ((void *)*(__seg_gs uintptr_t *)0x00) -#define _NtGetStackHigh() ((void *)*(__seg_gs uintptr_t *)0x08) -#define _NtGetStackLow() ((void *)*(__seg_gs uintptr_t *)0x10) -#define _NtGetSubsystemTib() ((void *)*(__seg_gs uintptr_t *)0x18) -#define _NtGetFib() ((void *)*(__seg_gs uintptr_t *)0x20) -#define _NtGetEnv() ((char16_t *)*(__seg_gs intptr_t *)0x38) -#define _NtGetRpc() ((void *)*(__seg_gs uintptr_t *)0x50) -#define _NtGetTls() ((void *)*(__seg_gs uintptr_t *)0x58) - -#endif /* __GNUC__ */ -#endif /* COSMOPOLITAN_LIBC_NT_TEB_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/nt/version.h b/libc/nt/version.h deleted file mode 100644 index 3d14e8f90..000000000 --- a/libc/nt/version.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_NT_VERSION_H_ -#define COSMOPOLITAN_LIBC_NT_VERSION_H_ -#include "libc/nt/struct/osversioninfo.h" -COSMOPOLITAN_C_START_ - -bool32 IsAtLeastWindows10(void) pureconst; -bool32 GetVersionEx(struct NtOsVersionInfo *lpVersionInformation); - -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) && defined(__x86_64__) -#define IsAtLeastWindows10() (GetNtMajorVersion() >= 10) -#define GetNtMajorVersion() \ - __extension__({ \ - uintptr_t __x; \ - __asm__("mov\t%%gs:96,%q0\r\n" \ - "mov\t280(%q0),%b0" \ - : "=q"(__x)); \ - (unsigned char)__x; \ - }) -#endif - -COSMOPOLITAN_C_END_ -#endif /* COSMOPOLITAN_LIBC_NT_VERSION_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/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-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/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..66fd16a50 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,23 +328,26 @@ 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; } #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)) && @@ -360,10 +368,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 +388,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..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,20 +35,54 @@ #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; parent = __pid; BLOCK_SIGNALS; - if (IsWindows()) __proc_lock(); - if (__threaded && _weaken(_pthread_onfork_prepare)) { - _weaken(_pthread_onfork_prepare)(); + if (IsWindows()) + __proc_lock(); + if (__threaded) { + _onfork_prepare(); } if (!IsWindows()) { ax = sys_fork(); @@ -98,16 +133,17 @@ 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(); + 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/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 8390c5c52..6cf8439af 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,12 +378,14 @@ 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}, - 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; @@ -385,7 +396,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 +407,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 +510,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 +621,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 +647,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..837957482 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]); } @@ -230,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/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..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); @@ -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/vfork.S b/libc/proc/vfork.S index d43faf4cf..482d3b23a 100644 --- a/libc/proc/vfork.S +++ b/libc/proc/vfork.S @@ -121,7 +121,7 @@ vfork: // } else { // __get_tls()->tib_flags &= ~TIB_FLAG_VFORKED; // } - sub x1,x28,#192 // sizeof(CosmoTib) + sub x1,x28,#512 // sizeof(CosmoTib) ldr x2,[x1,64] cbnz x0,2f orr x2,x2,#TIB_FLAG_VFORKED 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/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 7a9913ccb..dbd5e2301 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; @@ -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 @@ -146,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; @@ -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; } @@ -525,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/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/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/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/enable_tls.c b/libc/runtime/enable_tls.c index 045740baf..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; @@ -68,13 +69,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: * @@ -112,10 +113,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 +135,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 +156,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 +203,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 +227,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 +253,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/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/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/getinterpreterexecutablename.c b/libc/runtime/getinterpreterexecutablename.c index 81fef93e0..8f9c8a4d2 100644 --- a/libc/runtime/getinterpreterexecutablename.c +++ b/libc/runtime/getinterpreterexecutablename.c @@ -76,7 +76,7 @@ char *GetInterpreterExecutableName(char *p, size_t n) { cmd[2] = 5; // KERN_PROC_PATHNAME } // cmd[3] = -1; // current process - if (sys_sysctl(cmd, ARRAYLEN(cmd), p, &n, 0, 0) != -1) { + if (sysctl(cmd, ARRAYLEN(cmd), p, &n, 0, 0) != -1) { errno = e; return p; } 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..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" @@ -122,7 +123,9 @@ 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; + int e = errno; if (!__symtab && !__isworker) { if (_weaken(__zipos_get) && (z = _weaken(__zipos_get)())) { if ((__symtab = GetSymbolTableFromZip(z))) { @@ -136,6 +139,7 @@ struct SymbolTable *GetSymbolTable(void) { __symtab = GetSymbolTableFromElf(); } } + errno = e; pthread_spin_unlock(&g_lock); return __symtab; } 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/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/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/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/memtrack.internal.h b/libc/runtime/memtrack.internal.h index 6607a036a..120cf5939 100644 --- a/libc/runtime/memtrack.internal.h +++ b/libc/runtime/memtrack.internal.h @@ -3,7 +3,6 @@ #include "ape/sections.internal.h" #include "libc/dce.h" #include "libc/macros.internal.h" -#include "libc/nt/version.h" #include "libc/runtime/runtime.h" #include "libc/runtime/stack.h" #include "libc/sysv/consts/ss.h" 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/pc.internal.h b/libc/runtime/pc.internal.h index b14a7f527..b9d2b4a89 100644 --- a/libc/runtime/pc.internal.h +++ b/libc/runtime/pc.internal.h @@ -205,9 +205,9 @@ void __unref_page(struct mman *, uint64_t *, uint64_t); * I/O devices. */ forceinline void __invert_and_perm_ref_memory_area(struct mman *mm, - uint64_t *pml4t, uint64_t ps, - uint64_t size, - uint64_t pte_flags) { + uint64_t *pml4t, uint64_t ps, + uint64_t size, + uint64_t pte_flags) { __invert_memory_area(mm, pml4t, ps, size, pte_flags | PAGE_REFC); } diff --git a/libc/intrin/quick_exit.c b/libc/runtime/quick_exit.c similarity index 81% rename from libc/intrin/quick_exit.c rename to libc/runtime/quick_exit.c index df1bbf1c7..78b5e8ac0 100644 --- a/libc/intrin/quick_exit.c +++ b/libc/runtime/quick_exit.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 2021 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,11 +16,10 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/intrin/strace.internal.h" #include "libc/intrin/weaken.h" -#include "libc/runtime/internal.h" #include "libc/runtime/runtime.h" -#include "libc/stdio/stdio.h" + +void __funcs_on_quick_exit(void); /** * Exits process faster. @@ -28,14 +27,8 @@ * @param exitcode is masked with 255 * @noreturn */ -wontreturn void quick_exit(int exitcode) { - const uintptr_t *p; - STRACE("quick_exit(%d)", exitcode); - if (_weaken(fflush)) { - _weaken(fflush)(0); - } - for (p = __fini_array_end; p > __fini_array_start;) { - ((void (*)(void))(*--p))(); - } - _Exit(exitcode); +wontreturn void quick_exit(int code) { + if (_weaken(__funcs_on_quick_exit)) + _weaken(__funcs_on_quick_exit)(); + _Exit(code); } diff --git a/libc/runtime/runtime.h b/libc/runtime/runtime.h index db0dfb253..c2dc963d3 100644 --- a/libc/runtime/runtime.h +++ b/libc/runtime/runtime.h @@ -103,15 +103,16 @@ 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; 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); @@ -119,7 +120,6 @@ void __jit_begin(void); void __jit_end(void); void __clear_cache(void *, void *); /* portability */ -int NtGetVersion(void) pureconst; bool32 IsGenuineBlink(void); bool32 IsCygwin(void); const char *GetCpuidOs(void); 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/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..7f6cfbb95 100644 --- a/libc/runtime/winmain.greg.c +++ b/libc/runtime/winmain.greg.c @@ -18,6 +18,7 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/assert.h" #include "libc/calls/internal.h" +#include "libc/calls/sig.internal.h" #include "libc/calls/syscall_support-nt.internal.h" #include "libc/intrin/nomultics.internal.h" #include "libc/intrin/weaken.h" @@ -34,7 +35,7 @@ #include "libc/nt/pedef.internal.h" #include "libc/nt/process.h" #include "libc/nt/runtime.h" -#include "libc/nt/struct/teb.h" +#include "libc/nt/signals.h" #include "libc/nt/thunk/msabi.h" #include "libc/runtime/internal.h" #include "libc/runtime/memtrack.internal.h" @@ -50,6 +51,7 @@ #define abi __msabi textwindows dontinstrument // clang-format off +__msabi extern typeof(AddVectoredExceptionHandler) *const __imp_AddVectoredExceptionHandler; __msabi extern typeof(CreateFileMapping) *const __imp_CreateFileMappingW; __msabi extern typeof(DuplicateHandle) *const __imp_DuplicateHandle; __msabi extern typeof(FreeEnvironmentStrings) *const __imp_FreeEnvironmentStringsW; @@ -94,11 +96,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 +130,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; } @@ -149,14 +156,20 @@ static bool32 HasEnvironmentVariable(const char16_t *name) { return __imp_GetEnvironmentVariableW(name, buf, ARRAYLEN(buf)); } +static abi unsigned OnWinCrash(struct NtExceptionPointers *ep) { + int code, sig = __sig_crash_sig(ep, &code); + TerminateThisProcess(sig); +} + // main function of windows init process // i.e. first process spawned that isn't forked static abi wontreturn void WinInit(const char16_t *cmdline) { __oldstack = (intptr_t)__builtin_frame_address(0); + __imp_SetConsoleOutputCP(kNtCpUtf8); + // make console into utf-8 ansi/xterm style tty - if (NtGetPeb()->OSMajorVersion >= 10 && - (intptr_t)v_ntsubsystem == kNtImageSubsystemWindowsCui) { + if ((intptr_t)v_ntsubsystem == kNtImageSubsystemWindowsCui) { __imp_SetConsoleCP(kNtCpUtf8); __imp_SetConsoleOutputCP(kNtCpUtf8); for (int i = 0; i <= 2; ++i) { @@ -175,6 +188,9 @@ static abi wontreturn void WinInit(const char16_t *cmdline) { } } + // so crash signals can be reported to cosmopolitan bash + __imp_AddVectoredExceptionHandler(true, (void *)OnWinCrash); + // allocate memory for stack and argument block _mmi.p = _mmi.s; _mmi.n = ARRAYLEN(_mmi.s); @@ -236,7 +252,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 +319,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..92b017942 100644 --- a/libc/runtime/zipos-fcntl.c +++ b/libc/runtime/zipos-fcntl.c @@ -28,10 +28,10 @@ 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); + return sys_dup_nt(fd, -1, (cmd == F_DUPFD_CLOEXEC ? _O_CLOEXEC : 0), start); } rc = sys_fcntl(fd, cmd, start, __sys_fcntl); if (rc != -1) { 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-mmap.c b/libc/runtime/zipos-mmap.c index 0f27cdfd7..1480c7cb8 100644 --- a/libc/runtime/zipos-mmap.c +++ b/libc/runtime/zipos-mmap.c @@ -50,7 +50,7 @@ * @return virtual base address of new mapping, or MAP_FAILED w/ errno */ void *__zipos_mmap(void *addr, size_t size, int prot, int flags, - struct ZiposHandle *h, int64_t off) { + struct ZiposHandle *h, int64_t off) { if (off < 0) { STRACE("negative zipos mmap offset"); 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..809d622df 100644 --- a/libc/runtime/zipos-notat.c +++ b/libc/runtime/zipos-notat.c @@ -17,12 +17,13 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/calls/internal.h" -#include "libc/sysv/errfuns.h" #include "libc/runtime/zipos.internal.h" +#include "libc/sysv/errfuns.h" 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/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/accept-nt.c b/libc/sock/accept-nt.c index 22e7cb549..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,11 +119,20 @@ 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; - 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..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; @@ -63,7 +66,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 +96,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 @@ -110,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; } @@ -119,7 +127,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) { @@ -127,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/libc/sock/epoll.c b/libc/sock/epoll.c index 4c86e35e1..dfb7174d6 100644 --- a/libc/sock/epoll.c +++ b/libc/sock/epoll.c @@ -127,7 +127,7 @@ https://github.com/piscisaureus/wepoll"); } while (0) #define CONTAINOF(ptr, type, member) \ - ((type *)((uintptr_t)(ptr) - offsetof(type, member))) + ((type *)((uintptr_t)(ptr)-offsetof(type, member))) #define TREE__ROTATE(cis, trans) \ struct TreeNode *p = node; \ @@ -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..0e956c1b0 100644 --- a/libc/sock/gethostips.c +++ b/libc/sock/gethostips.c @@ -20,11 +20,11 @@ #include "libc/calls/syscall-sysv.internal.h" #include "libc/calls/syscall_support-nt.internal.h" #include "libc/dce.h" -#include "libc/serialize.h" #include "libc/macros.internal.h" #include "libc/mem/mem.h" #include "libc/nt/errors.h" #include "libc/nt/iphlpapi.h" +#include "libc/serialize.h" #include "libc/sock/sock.h" #include "libc/str/str.h" #include "libc/sysv/consts/af.h" @@ -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/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/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..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 @@ -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/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/__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/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/demangle.c b/libc/stdio/demangle.c deleted file mode 100644 index 2950ad7ba..000000000 --- a/libc/stdio/demangle.c +++ /dev/null @@ -1,4426 +0,0 @@ -/*-*- 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) 2007 Hyogeol Lee │ -│ Copyright (c) 2015-2017 Kai Wang │ -│ All rights reserved. │ -│ │ -│ Redistribution and use in source and binary forms, with or without │ -│ modification, are permitted provided that the following conditions │ -│ are met: │ -│ 1. Redistributions of source code must retain the above copyright │ -│ notice, this list of conditions and the following disclaimer │ -│ in this position and unchanged. │ -│ 2. Redistributions in binary form must reproduce the above copyright │ -│ notice, this list of conditions and the following disclaimer in the │ -│ documentation and/or other materials provided with the distribution. │ -│ │ -│ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR │ -│ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES │ -│ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. │ -│ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, │ -│ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT │ -│ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, │ -│ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY │ -│ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT │ -│ (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/fmt/conv.h" -#include "libc/mem/mem.h" -#include "libc/stdio/stdio.h" -#include "libc/str/str.h" - -__notice(demangle_notice, "\ -FreeBSD C++ Demangle (BSD-2)\n\ -Copyright (c) 2007 Hyogeol Lee \n\ -Copyright (c) 2015-2017 Kai Wang "); -// https://github.com/freebsd/freebsd-src/blob/2176c9ab71c85efd90a6c7af4a9e04fe8e3d49ca/contrib/libcxxrt/libelftc_dem_gnu3.c -// clang-format off - -/** - * @file demangle.c - * @brief Decode IA-64 C++ ABI style implementation. - * - * IA-64 standard ABI(Itanium C++ ABI) references. - * - * http://www.codesourcery.com/cxx-abi/abi.html#mangling \n - * 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 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 - -enum type_qualifier { - TYPE_PTR, TYPE_REF, TYPE_CMX, TYPE_IMG, TYPE_EXT, TYPE_RST, TYPE_VAT, - TYPE_CST, TYPE_VEC, TYPE_RREF -}; - -struct vector_type_qualifier { - size_t size, capacity; - enum type_qualifier *q_container; - struct vector_str ext_name; -}; - -enum read_cmd { - READ_FAIL, READ_NEST, READ_TMPL, READ_EXPR, READ_EXPL, READ_LOCAL, - READ_TYPE, READ_FUNC, READ_PTRMEM -}; - -struct read_cmd_item { - enum read_cmd cmd; - void *data; -}; - -struct vector_read_cmd { - size_t size, capacity; - struct read_cmd_item *r_container; -}; - -enum push_qualifier { - PUSH_ALL_QUALIFIER, - PUSH_CV_QUALIFIER, - PUSH_NON_CV_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 */ -}; - -struct type_delimit { - bool paren; - 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 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))) - -static size_t get_strlen_sum(const struct vector_str *v); -static bool vector_str_grow(struct vector_str *v); - -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); - - 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); -} - -/** - * @brief Find string in vector_str. - * @param v Destination vector. - * @param o String to find. - * @param l Length of the string. - * @return -1 at failed, 0 at not found, 1 at found. - */ -static int -vector_str_find(const struct vector_str *v, const char *o, size_t l) -{ - size_t i; - - if (v == NULL || o == NULL) - return (-1); - - for (i = 0; i < v->size; ++i) - if (strncmp(v->container[i], o, l) == 0) - return (1); - - return (0); -} - -/** - * @brief Get new allocated flat string from vector. - * - * If l is not NULL, return length of the string. - * @param v Destination vector. - * @param l Length of the string. - * @return NULL at failed or NUL terminated new allocated string. - */ -static char * -vector_str_get_flat(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 ((rtn_size = get_strlen_sum(v)) == 0) - return (NULL); - - if ((rtn = malloc(sizeof(char) * (rtn_size + 1))) == NULL) - return (NULL); - - 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) - *l = rtn_size; - - return (rtn); -} - -static bool -vector_str_grow(struct vector_str *v) -{ - size_t i, tmp_cap; - char **tmp_ctn; - - if (v == NULL) - return (false); - - assert(v->capacity > 0); - - tmp_cap = BUFFER_GROW(v->capacity); - - assert(tmp_cap > v->capacity); - - if ((tmp_ctn = malloc(sizeof(char *) * tmp_cap)) == NULL) - 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); -} - -/** - * @brief Initialize vector_str. - * @return false at failed, true at success. - */ -static bool -vector_str_init(struct vector_str *v) -{ - - if (v == NULL) - return (false); - - v->size = 0; - v->capacity = VECTOR_DEF_CAPACITY; - - assert(v->capacity > 0); - - if ((v->container = malloc(sizeof(char *) * v->capacity)) == NULL) - return (false); - - assert(v->container != NULL); - - return (true); -} - -/** - * @brief Remove last element in vector_str. - * @return false at failed, true at success. - */ -static bool -vector_str_pop(struct vector_str *v) -{ - - if (v == NULL) - return (false); - - if (v->size == 0) - return (true); - - --v->size; - - free(v->container[v->size]); - v->container[v->size] = NULL; - - return (true); -} - -/** - * @brief Push back string to vector. - * @return false at failed, true at success. - */ -static bool -vector_str_push(struct vector_str *v, const char *str, size_t len) -{ - - if (v == NULL || str == NULL) - return (false); - - if (v->size == v->capacity && vector_str_grow(v) == false) - return (false); - - if ((v->container[v->size] = malloc(sizeof(char) * (len + 1))) == NULL) - return (false); - - snprintf(v->container[v->size], len + 1, "%s", str); - - ++v->size; - - return (true); -} - -/** - * @brief Push front org vector to det vector. - * @return false at failed, true at success. - */ -static bool -vector_str_push_vector_head(struct vector_str *dst, struct vector_str *org) -{ - size_t i, j, tmp_cap; - char **tmp_ctn; - - if (dst == NULL || org == NULL) - return (false); - - tmp_cap = BUFFER_GROW(dst->size + org->size); - - if ((tmp_ctn = malloc(sizeof(char *) * tmp_cap)) == NULL) - 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); - } - - 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); -} - -/** - * @brief Push org vector to the tail of det vector. - * @return false at failed, true at success. - */ -static bool -vector_str_push_vector(struct vector_str *dst, struct vector_str *org) -{ - size_t i, j, tmp_cap; - char **tmp_ctn; - - if (dst == NULL || org == NULL) - return (false); - - tmp_cap = BUFFER_GROW(dst->size + org->size); - - if ((tmp_ctn = malloc(sizeof(char *) * tmp_cap)) == NULL) - 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); - - dst->container = tmp_ctn; - dst->capacity = tmp_cap; - dst->size += org->size; - - return (true); -} - -/** - * @brief Get new allocated flat string from vector between begin and end. - * - * If r_len is not NULL, string length will be returned. - * @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) -{ - size_t cur, i, len; - char *rtn; - - if (v == NULL || begin > end) - return (NULL); - - 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 (r_len != NULL) - *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'; - - 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) -{ - 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 (org == NULL) - return (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); -} - -static void -cpp_demangle_data_dest(struct cpp_demangle_data *d) -{ - - if (d == NULL) - return; - - 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); -} - -static int -cpp_demangle_data_init(struct cpp_demangle_data *d, const char *cur) -{ - - if (d == NULL || cur == NULL) - 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); - - d->mem_rst = false; - d->mem_vat = false; - d->mem_cst = false; - d->mem_ref = false; - d->mem_rref = false; - d->is_tmpl = false; - d->is_functype = false; - d->ref_qualifier = false; - d->push_qualifier = PUSH_ALL_QUALIFIER; - d->func_type = 0; - d->cur = 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); -} - -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); - - /* - * is_tmpl is used to check if the type (function arg) is right next - * to template args, and should always be cleared whenever new string - * pushed. - */ - ddata->is_tmpl = false; - - return (vector_str_push(ddata->cur_output, str, len)); -} - -static int -cpp_demangle_pop_str(struct cpp_demangle_data *ddata) -{ - - if (ddata == NULL) - return (0); - - 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 (!vector_str_find(&ddata->subst, str, len)) - return (vector_str_push(&ddata->subst, str, len)); - - 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; - - if (ddata == NULL || v == NULL) - return (0); - - if ((str = vector_str_get_flat(v, &str_len)) == NULL) - return (0); - - rtn = cpp_demangle_push_subst(ddata, str, str_len); - - free(str); - - 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; - 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 ((idx = v->size) == 0) - 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; - } - - cv = true; - e_idx = 0; - while (idx > 0) { - switch (v->q_container[idx - 1]) { - case TYPE_PTR: - cv = false; - 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; - } - break; - - case TYPE_REF: - cv = false; - 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; - } - break; - - case TYPE_RREF: - cv = false; - 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; - } - break; - - case TYPE_CMX: - cv = false; - 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; - } - break; - - case TYPE_IMG: - cv = false; - 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; - } - break; - - case TYPE_EXT: - 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 (!DEM_PUSH_STR(ddata, buf)) { - free(buf); - goto clean; - } - - 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; - - case TYPE_RST: - if (ddata->push_qualifier == PUSH_NON_CV_QUALIFIER && - cv) - break; - 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; - 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; - } - break; - - case TYPE_VAT: - if (ddata->push_qualifier == PUSH_NON_CV_QUALIFIER && - cv) - break; - 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; - 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; - } - break; - - case TYPE_CST: - if (ddata->push_qualifier == PUSH_NON_CV_QUALIFIER && - cv) - break; - 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; - 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; - } - break; - - case TYPE_VEC: - 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 (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); -} - -static int -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 (!cpp_demangle_push_str(ddata, ddata->subst.container[idx], len)) - return (0); - - /* skip '_' */ - ++ddata->cur; - - return (1); -} - -static int -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 (!cpp_demangle_push_str(ddata, ddata->tmpl.container[idx], len)) - return (0); - - ++ddata->cur; - - return (1); -} - -static int -cpp_demangle_read_array(struct cpp_demangle_data *ddata) -{ - size_t i, num_len, exp_len, p_idx, idx; - const char *num; - char *exp; - - if (ddata == NULL || *(++ddata->cur) == '\0') - return (0); - - if (*ddata->cur == '_') { - if (*(++ddata->cur) == '\0') - return (0); - - if (!cpp_demangle_read_type(ddata, NULL)) - return (0); - - if (!DEM_PUSH_STR(ddata, " []")) - return (0); - } else { - if (ELFTC_ISDIGIT(*ddata->cur) != 0) { - num = ddata->cur; - while (ELFTC_ISDIGIT(*ddata->cur) != 0) - ++ddata->cur; - if (*ddata->cur != '_') - return (0); - num_len = ddata->cur - num; - assert(num_len > 0); - 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, num, num_len)) - return (0); - if (!DEM_PUSH_STR(ddata, "]")) - 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); - 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); - } - ++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); - } - } - - return (1); -} - -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->cur == '_' && *(ddata->cur + 1) == 'Z') { - ddata->cur += 2; - if (*ddata->cur == '\0') - return (0); - if (!cpp_demangle_read_encoding(ddata)) - return (0); - ++ddata->cur; - return (1); - } - - switch (*ddata->cur) { - case 'b': - if (*(ddata->cur + 2) != 'E') - return (0); - switch (*(++ddata->cur)) { - case '0': - ddata->cur += 2; - return (DEM_PUSH_STR(ddata, "false")); - case '1': - ddata->cur += 2; - return (DEM_PUSH_STR(ddata, "true")); - default: - return (0); - } - - case 'd': - ++ddata->cur; - 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)); - - case 'f': - ++ddata->cur; - 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)); - - case 'i': - case 'j': - case 'l': - case 'm': - case 'n': - case 's': - case 't': - case 'x': - case 'y': - if (*(++ddata->cur) == 'n') { - if (!DEM_PUSH_STR(ddata, "-")) - return (0); - ++ddata->cur; - } - num = ddata->cur; - while (*ddata->cur != 'E') { - if (!ELFTC_ISDIGIT(*ddata->cur)) - return (0); - ++ddata->cur; - } - ++ddata->cur; - return (cpp_demangle_push_str(ddata, num, - ddata->cur - num - 1)); - - default: - return (0); - } -} - -static int -cpp_demangle_read_expression(struct cpp_demangle_data *ddata) -{ - - if (ddata == NULL || *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)); - - case SIMPLE_HASH('s', 'r'): - ddata->cur += 2; - if (!cpp_demangle_read_type(ddata, NULL)) - return (0); - if (!cpp_demangle_read_uqname(ddata)) - return (0); - if (*ddata->cur == 'I') - 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)); - - case SIMPLE_HASH('a', 'd'): - /* operator & (unary) */ - ddata->cur += 2; - 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)); - - case SIMPLE_HASH('a', 'N'): - /* operator &= */ - ddata->cur += 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)); - - case SIMPLE_HASH('c', 'l'): - /* operator () */ - ddata->cur += 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)); - - case SIMPLE_HASH('c', 'o'): - /* operator ~ */ - ddata->cur += 2; - 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)); - - case SIMPLE_HASH('d', 'a'): - /* operator delete [] */ - ddata->cur += 2; - 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)); - - case SIMPLE_HASH('d', 'l'): - /* operator delete */ - ddata->cur += 2; - 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)); - - case SIMPLE_HASH('d', 'V'): - /* operator /= */ - ddata->cur += 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)); - - case SIMPLE_HASH('e', 'O'): - /* operator ^= */ - ddata->cur += 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)); - - case SIMPLE_HASH('g', 'e'): - /* operator >= */ - ddata->cur += 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)); - - case SIMPLE_HASH('i', 'x'): - /* operator [] */ - ddata->cur += 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)); - - case SIMPLE_HASH('l', 's'): - /* operator << */ - ddata->cur += 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)); - - case SIMPLE_HASH('l', 't'): - /* operator < */ - ddata->cur += 2; - 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)); - - case SIMPLE_HASH('m', 'I'): - /* operator -= */ - ddata->cur += 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)); - - case SIMPLE_HASH('m', 'L'): - /* operator *= */ - ddata->cur += 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)); - - case SIMPLE_HASH('n', 'a'): - /* operator new[] */ - ddata->cur += 2; - 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)); - - case SIMPLE_HASH('n', 'g'): - /* operator - (unary) */ - ddata->cur += 2; - 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)); - - case SIMPLE_HASH('n', 'w'): - /* operator new */ - ddata->cur += 2; - 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)); - - case SIMPLE_HASH('o', 'r'): - /* operator | */ - ddata->cur += 2; - 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)); - - case SIMPLE_HASH('p', 'l'): - /* operator + */ - ddata->cur += 2; - 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)); - - case SIMPLE_HASH('p', 'm'): - /* operator ->* */ - ddata->cur += 2; - 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)); - - case SIMPLE_HASH('p', 's'): - /* operator + (unary) */ - ddata->cur += 2; - 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)); - - case SIMPLE_HASH('q', 'u'): - /* operator ? */ - ddata->cur += 2; - 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)); - - case SIMPLE_HASH('r', 'M'): - /* operator %= */ - ddata->cur += 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)); - - case SIMPLE_HASH('r', 'S'): - /* operator >>= */ - ddata->cur += 2; - 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)); - - case SIMPLE_HASH('s', 'v'): - /* operator sizeof */ - ddata->cur += 2; - return (cpp_demangle_read_expression_unary(ddata, "sizeof", 6)); - } - - switch (*ddata->cur) { - case 'L': - return (cpp_demangle_read_expr_primary(ddata)); - case 'T': - return (cpp_demangle_read_tmpl_param(ddata)); - } - - return (0); -} - -static int -cpp_demangle_read_expression_flat(struct cpp_demangle_data *ddata, char **str) -{ - struct vector_str *output; - size_t i, p_idx, idx, exp_len; - char *exp; - - output = &ddata->output; - - p_idx = output->size; - - if (!cpp_demangle_read_expression(ddata)) - return (0); - - if ((exp = vector_str_substr(output, p_idx, output->size - 1, - &exp_len)) == NULL) - return (0); - - idx = output->size; - for (i = p_idx; i < idx; ++i) { - if (!vector_str_pop(output)) { - free(exp); - return (0); - } - } - - *str = exp; - - 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 (!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_unary(struct cpp_demangle_data *ddata, - const char *name, size_t len) -{ - - if (ddata == NULL || name == NULL || len == 0) - return (0); - if (!cpp_demangle_read_expression(ddata)) - return (0); - - 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 (!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_function(struct cpp_demangle_data *ddata, int *ext_c, - struct vector_type_qualifier *v) -{ - struct type_delimit td; - struct read_cmd_item *rc; - size_t class_type_size, class_type_len, limit; - const char *class_type; - int i; - bool paren, non_cv_qualifier; - - if (ddata == NULL || *ddata->cur != 'F' || v == NULL) - return (0); - - ++ddata->cur; - if (*ddata->cur == 'Y') { - if (ext_c != NULL) - *ext_c = 1; - ++ddata->cur; - } - - /* Return type */ - if (!cpp_demangle_read_type(ddata, NULL)) - return (0); - - if (*ddata->cur != 'E') { - if (!DEM_PUSH_STR(ddata, " ")) - return (0); - - non_cv_qualifier = false; - if (v->size > 0) { - 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) { - non_cv_qualifier = true; - break; - } - } - } - - paren = false; - rc = vector_read_cmd_find(&ddata->cmd, READ_PTRMEM); - if (non_cv_qualifier || rc != NULL) { - if (!DEM_PUSH_STR(ddata, "(")) - 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); - - if (rc) { - if (non_cv_qualifier && !DEM_PUSH_STR(ddata, " ")) - return (0); - if ((class_type_size = ddata->class_type.size) == 0) - 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 (!cpp_demangle_push_str(ddata, class_type, - class_type_len)) - return (0); - if (!DEM_PUSH_STR(ddata, "::*")) - 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); - ++ddata->func_type; - } - - if (paren) { - if (!DEM_PUSH_STR(ddata, ")")) - return (0); - paren = false; - } - - td.paren = false; - td.firstp = true; - limit = 0; - ddata->is_functype = true; - for (;;) { - if (!cpp_demangle_read_type(ddata, &td)) - return (0); - if (*ddata->cur == 'E') - break; - if (limit++ > CPP_DEMANGLE_TRY_LIMIT) - return (0); - } - ddata->is_functype = false; - if (td.paren) { - if (!DEM_PUSH_STR(ddata, ")")) - 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); - - ddata->push_qualifier = PUSH_ALL_QUALIFIER; - - /* Release type qualifier vector. */ - vector_type_qualifier_dest(v); - if (!vector_type_qualifier_init(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); - break; - case TYPE_RREF: - if (!DEM_PUSH_STR(ddata, " &&")) - return (0); - break; - default: - return (0); - } - ddata->ref_qualifier = false; - } - } - - ++ddata->cur; - - return (1); -} - -/* read encoding, encoding are function name, data name, special-name */ -static int -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); - - /* 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); - ddata->cur += 2; - if (*ddata->cur == '\0') - return (0); - return (cpp_demangle_read_encoding(ddata)); - - case SIMPLE_HASH('G', 'R'): - if (!DEM_PUSH_STR(ddata, "reference temporary #")) - return (0); - ddata->cur += 2; - if (*ddata->cur == '\0') - return (0); - if (!cpp_demangle_read_name_flat(ddata, &name)) - return (0); - rtn = 0; - if (!cpp_demangle_read_number_as_string(ddata, &num_str)) - goto clean1; - if (!DEM_PUSH_STR(ddata, num_str)) - goto clean2; - if (!DEM_PUSH_STR(ddata, " for ")) - goto clean2; - if (!DEM_PUSH_STR(ddata, name)) - goto clean2; - rtn = 1; - clean2: - free(num_str); - clean1: - free(name); - return (rtn); - - case SIMPLE_HASH('G', 'T'): - ddata->cur += 2; - if (*ddata->cur == '\0') - return (0); - switch (*ddata->cur) { - case 'n': - if (!DEM_PUSH_STR(ddata, "non-transaction clone for ")) - return (0); - break; - case 't': - default: - if (!DEM_PUSH_STR(ddata, "transaction clone for ")) - return (0); - break; - } - ++ddata->cur; - 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); - 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); - ddata->cur += 2; - if (*ddata->cur == '\0') - return (0); - if (!cpp_demangle_read_offset(ddata)) - return (0); - if (!cpp_demangle_read_offset(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); - ddata->cur += 2; - if (*ddata->cur == '\0') - return (0); - if (!cpp_demangle_read_type_flat(ddata, &type)) - return (0); - rtn = 0; - if (!cpp_demangle_read_number(ddata, &offset)) - goto clean3; - if (*ddata->cur++ != '_') - goto clean3; - if (!cpp_demangle_read_type(ddata, NULL)) - goto clean3; - if (!DEM_PUSH_STR(ddata, "-in-")) - goto clean3; - if (!DEM_PUSH_STR(ddata, type)) - goto clean3; - rtn = 1; - clean3: - free(type); - return (rtn); - - case SIMPLE_HASH('T', 'D'): - /* typeinfo common proxy */ - break; - - case SIMPLE_HASH('T', 'F'): - /* typeinfo fn */ - if (!DEM_PUSH_STR(ddata, "typeinfo fn for ")) - return (0); - ddata->cur += 2; - if (*ddata->cur == '\0') - 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); - ddata->cur += 2; - if (*ddata->cur == '\0') - return (0); - if (!cpp_demangle_read_nv_offset(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); - ddata->cur += 2; - if (*ddata->cur == '\0') - return (0); - break; - - case SIMPLE_HASH('T', 'I'): - /* typeinfo structure */ - if (!DEM_PUSH_STR(ddata, "typeinfo for ")) - return (0); - ddata->cur += 2; - if (*ddata->cur == '\0') - 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); - ddata->cur += 2; - if (*ddata->cur == '\0') - 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); - ddata->cur += 2; - if (*ddata->cur == '\0') - 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); - ddata->cur += 2; - if (*ddata->cur == '\0') - 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); - ddata->cur += 2; - if (*ddata->cur == '\0') - return (0); - if (!cpp_demangle_read_v_offset(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); - ddata->cur += 2; - if (*ddata->cur == '\0') - 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); - ddata->cur += 2; - if (*ddata->cur == '\0') - return (0); - break; - } - - return (cpp_demangle_read_name(ddata)); -} - -static int -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; - - if (ddata == NULL) - return (0); - if (*(++ddata->cur) == '\0') - return (0); - - if (!vector_str_init(&local_name)) - return (0); - ddata->cur_output = &local_name; - - if (!cpp_demangle_read_encoding(ddata)) { - vector_str_dest(&local_name); - return (0); - } - - ddata->cur_output = &ddata->output; - - td.paren = false; - td.firstp = true; - more_type = false; - 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; - - /* Read return type */ - if (!cpp_demangle_read_type(ddata, NULL)) { - vector_str_dest(&local_name); - 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); - - while (*ddata->cur != '\0') { - if (!cpp_demangle_read_type(ddata, &td)) - return (0); - if (more_type) - more_type = false; - if (*ddata->cur == 'E') - break; - if (limit++ > CPP_DEMANGLE_TRY_LIMIT) - return (0); - } - if (more_type) - return (0); - - if (*(++ddata->cur) == '\0') - return (0); - if (td.paren == true) { - if (!DEM_PUSH_STR(ddata, ")")) - return (0); - td.paren = false; - } - if (*ddata->cur == 's') - ++ddata->cur; - else { - if (!DEM_PUSH_STR(ddata, "::")) - return (0); - if (!cpp_demangle_read_name(ddata)) - return (0); - } - if (*ddata->cur == '_') { - ++ddata->cur; - while (ELFTC_ISDIGIT(*ddata->cur) != 0) - ++ddata->cur; - } - - return (1); -} - -static int -cpp_demangle_read_name(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 || *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)); - } - - if (!vector_str_init(&v)) - return (0); - - 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; - - 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; - } - - rtn = 1; - -clean: - free(subst_str); - vector_str_dest(&v); - - return (rtn); -} - -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(output, p_idx, output->size - 1, - &name_len)) == NULL) - return (0); - - idx = output->size; - for (i = p_idx; i < idx; ++i) { - if (!vector_str_pop(output)) { - free(name); - return (0); - } - } - - *str = name; - - return (1); -} - -static int -cpp_demangle_read_nested_name(struct cpp_demangle_data *ddata) -{ - struct vector_str *output, v; - size_t limit, p_idx, subst_str_len; - int rtn; - char *subst_str; - - if (ddata == NULL || *ddata->cur != 'N') - return (0); - if (*(++ddata->cur) == '\0') - return (0); - - do { - switch (*ddata->cur) { - case 'r': - ddata->mem_rst = true; - break; - case 'V': - ddata->mem_vat = true; - break; - case 'K': - ddata->mem_cst = true; - break; - case 'R': - ddata->mem_ref = true; - break; - case 'O': - ddata->mem_rref = true; - break; - default: - goto next; - } - } while (*(++ddata->cur)); - -next: - output = ddata->cur_output; - if (!vector_str_init(&v)) - return (0); - - rtn = 0; - limit = 0; - for (;;) { - p_idx = output->size; - switch (*ddata->cur) { - case 'I': - if (!cpp_demangle_read_tmpl_args(ddata)) - goto clean; - break; - case 'S': - if (!cpp_demangle_read_subst(ddata)) - goto clean; - break; - case 'T': - if (!cpp_demangle_read_tmpl_param(ddata)) - goto clean; - break; - default: - if (!cpp_demangle_read_uqname(ddata)) - goto clean; - } - - 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 (!cpp_demangle_push_subst_v(ddata, &v)) - goto clean; - - next_comp: - if (*ddata->cur == 'E') - break; - 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; - } - if (limit++ > CPP_DEMANGLE_TRY_LIMIT) - goto clean; - } - - ++ddata->cur; - rtn = 1; - -clean: - vector_str_dest(&v); - - return (rtn); -} - -/* - * read number - * number ::= [n] - */ -static int -cpp_demangle_read_number(struct cpp_demangle_data *ddata, long *rtn) -{ - long len, negative_factor; - - if (ddata == NULL || rtn == NULL) - return (0); - - negative_factor = 1; - if (*ddata->cur == 'n') { - negative_factor = -1; - - ++ddata->cur; - } - if (ELFTC_ISDIGIT(*ddata->cur) == 0) - return (0); - - errno = 0; - if ((len = strtol(ddata->cur, (char **) NULL, 10)) == 0 && - errno != 0) - return (0); - - while (ELFTC_ISDIGIT(*ddata->cur) != 0) - ++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; - - if (!cpp_demangle_read_number(ddata, &n)) { - *str = NULL; - return (0); - } - - if (asprintf(str, "%ld", n) < 0) { - *str = NULL; - return (0); - } - - return (1); -} - -static int -cpp_demangle_read_nv_offset(struct cpp_demangle_data *ddata) -{ - - if (ddata == NULL) - 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 == NULL) - 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; - - if (ddata == NULL || *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 != NULL); - - 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_pointer_to_member(struct cpp_demangle_data *ddata, - struct vector_type_qualifier *v) -{ - size_t class_type_len, i, idx, p_idx; - int p_func_type, rtn; - char *class_type; - - if (ddata == NULL || *ddata->cur != 'M' || *(++ddata->cur) == '\0') - return (0); - - p_idx = ddata->output.size; - if (!cpp_demangle_read_type(ddata, NULL)) - return (0); - - if ((class_type = vector_str_substr(&ddata->output, p_idx, - ddata->output.size - 1, &class_type_len)) == NULL) - return (0); - - rtn = 0; - idx = ddata->output.size; - for (i = p_idx; i < idx; ++i) - if (!vector_str_pop(&ddata->output)) - goto clean1; - - if (!vector_read_cmd_push(&ddata->cmd, READ_PTRMEM, v)) - goto clean1; - - if (!vector_str_push(&ddata->class_type, class_type, class_type_len)) - goto clean2; - - p_func_type = ddata->func_type; - if (!cpp_demangle_read_type(ddata, NULL)) - goto clean3; - - if (p_func_type == ddata->func_type) { - if (!DEM_PUSH_STR(ddata, " ")) - goto clean3; - if (!cpp_demangle_push_str(ddata, class_type, class_type_len)) - goto clean3; - if (!DEM_PUSH_STR(ddata, "::*")) - goto clean3; - } - - rtn = 1; -clean3: - if (!vector_str_pop(&ddata->class_type)) - rtn = 0; -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); - - return (rtn); -} - -/* read source-name, source-name is */ -static int -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 (len == 12 && (memcmp("_GLOBAL__N_1", ddata->cur, 12) == 0)) - err = DEM_PUSH_STR(ddata, "(anonymous namespace)"); - else - err = cpp_demangle_push_str(ddata, ddata->cur, len); - - if (err == 0) - return (0); - - assert(ddata->cur_output->size > 0); - if (vector_read_cmd_find(&ddata->cmd, READ_TMPL) == NULL) - ddata->last_sname = - ddata->cur_output->container[ddata->output.size - 1]; - - ddata->cur += len; - - return (1); -} - -static int -cpp_demangle_read_subst(struct cpp_demangle_data *ddata) -{ - long nth; - - if (ddata == NULL || *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); - ddata->cur += 2; - if (*ddata->cur == 'I') - 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); - ddata->cur += 2; - if (*ddata->cur == 'I') - 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); - ddata->last_sname = "basic_iostream"; - ddata->cur += 2; - if (*ddata->cur == 'I') - return (cpp_demangle_read_subst_stdtmpl(ddata, - "std::basic_iostream >")); - return (1); - - case SIMPLE_HASH('S', 'i'): - /* 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, - "std::basic_istream >")); - return (1); - - case SIMPLE_HASH('S', 'o'): - /* 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, - "std::basic_ostream >")); - return (1); - - case SIMPLE_HASH('S', 's'): - /* - * std::basic_string, - * std::allocator > - * - * a.k.a std::string - */ - if (!DEM_PUSH_STR(ddata, "std::basic_string, std::allocator >")) - 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); - - case SIMPLE_HASH('S', 't'): - /* std:: */ - return (cpp_demangle_read_subst_std(ddata)); - } - - if (*(++ddata->cur) == '\0') - return (0); - - /* Skip unknown substitution abbreviations. */ - if (!(*ddata->cur >= '0' && *ddata->cur <= '9') && - !(*ddata->cur >= 'A' && *ddata->cur <= 'Z') && - *ddata->cur != '_') { - ++ddata->cur; - return (1); - } - - /* substitution */ - if (*ddata->cur == '_') - 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); - - /* first was '_', so increase one */ - ++nth; - - while (*ddata->cur != '_') - ++ddata->cur; - - assert(nth > 0); - - return (cpp_demangle_get_subst(ddata, nth)); - } - - /* NOTREACHED */ - return (0); -} - -static int -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 (!vector_str_init(&v)) - return (0); - - subst_str = NULL; - rtn = 0; - if (!DEM_PUSH_STR(ddata, "std::")) - goto clean; - - if (!VEC_PUSH_STR(&v, "std::")) - goto clean; - - ddata->cur += 2; - - output = ddata->cur_output; - - p_idx = output->size; - 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 (!vector_str_push(&v, subst_str, subst_str_len)) - goto clean; - - if (!cpp_demangle_push_subst_v(ddata, &v)) - goto clean; - - 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; - } - - rtn = 1; -clean: - free(subst_str); - vector_str_dest(&v); - - return (rtn); -} - -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; - int rtn; - char *subst_str, *substr; - - if (ddata == NULL || str == NULL) - return (0); - - if ((len = strlen(str)) == 0) - 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(output, p_idx, output->size - 1, - &substr_len)) == NULL) - return (0); - - rtn = 0; - if ((subst_str = malloc(sizeof(char) * (substr_len + len + 1))) == - NULL) - goto clean; - - 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; - - rtn = 1; -clean: - free(subst_str); - free(substr); - - return (rtn); -} - -static int -cpp_demangle_read_tmpl_arg(struct cpp_demangle_data *ddata) -{ - - if (ddata == NULL || *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, size; - char *arg; - - if (ddata == NULL || *ddata->cur == '\0') - return (0); - - ++ddata->cur; - - if (!vector_read_cmd_push(&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(v, idx, v->size - 1, &arg_len)) == - NULL) - 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); - - 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, ">")) - 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 == NULL || *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); - - /* 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) -{ - struct vector_type_qualifier v; - struct vector_str *output, sv; - size_t p_idx, type_str_len, subst_str_len; - int extern_c, is_builtin; - long len; - const char *p; - char *type_str, *exp_str, *num_str, *subst_str; - bool skip_ref_qualifier, omit_void; - - if (ddata == NULL) - return (0); - - output = ddata->cur_output; - if (td) { - if (td->paren == false) { - if (!DEM_PUSH_STR(ddata, "(")) - return (0); - if (ddata->output.size < 2) - return (0); - td->paren = true; - } - - if (!td->firstp) { - if (*ddata->cur != 'I') { - if (!DEM_PUSH_STR(ddata, ", ")) - return (0); - } - } - } - - assert(output != NULL); - /* - * [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); - - extern_c = 0; - is_builtin = 1; - p_idx = output->size; - type_str = exp_str = num_str = NULL; - skip_ref_qualifier = false; - -again: - - /* Clear ref-qualifier flag */ - if (*ddata->cur != 'R' && *ddata->cur != 'O' && *ddata->cur != 'E') - ddata->ref_qualifier = false; - - /* builtin type */ - switch (*ddata->cur) { - case 'a': - /* signed char */ - if (!DEM_PUSH_STR(ddata, "signed char")) - goto clean; - ++ddata->cur; - goto rtn; - - case 'A': - /* array type */ - if (!cpp_demangle_read_array(ddata)) - goto clean; - is_builtin = 0; - goto rtn; - - case 'b': - /* bool */ - if (!DEM_PUSH_STR(ddata, "bool")) - goto clean; - ++ddata->cur; - goto rtn; - - case 'C': - /* complex pair */ - if (!vector_type_qualifier_push(&v, TYPE_CMX)) - goto clean; - ++ddata->cur; - if (td) - td->firstp = false; - goto again; - - case 'c': - /* char */ - if (!DEM_PUSH_STR(ddata, "char")) - goto clean; - ++ddata->cur; - goto rtn; - - case 'd': - /* double */ - if (!DEM_PUSH_STR(ddata, "double")) - goto clean; - ++ddata->cur; - goto rtn; - - case 'D': - ++ddata->cur; - switch (*ddata->cur) { - case 'a': - /* auto */ - if (!DEM_PUSH_STR(ddata, "auto")) - goto clean; - ++ddata->cur; - break; - case 'c': - /* decltype(auto) */ - if (!DEM_PUSH_STR(ddata, "decltype(auto)")) - goto clean; - ++ddata->cur; - break; - case 'd': - /* IEEE 754r decimal floating point (64 bits) */ - if (!DEM_PUSH_STR(ddata, "decimal64")) - goto clean; - ++ddata->cur; - break; - case 'e': - /* IEEE 754r decimal floating point (128 bits) */ - if (!DEM_PUSH_STR(ddata, "decimal128")) - goto clean; - ++ddata->cur; - break; - case 'f': - /* IEEE 754r decimal floating point (32 bits) */ - if (!DEM_PUSH_STR(ddata, "decimal32")) - goto clean; - ++ddata->cur; - break; - case 'h': - /* IEEE 754r half-precision floating point (16 bits) */ - if (!DEM_PUSH_STR(ddata, "half")) - goto clean; - ++ddata->cur; - break; - case 'i': - /* char32_t */ - if (!DEM_PUSH_STR(ddata, "char32_t")) - goto clean; - ++ddata->cur; - break; - case 'n': - /* std::nullptr_t (i.e., decltype(nullptr)) */ - if (!DEM_PUSH_STR(ddata, "decltype(nullptr)")) - goto clean; - ++ddata->cur; - break; - case 's': - /* char16_t */ - if (!DEM_PUSH_STR(ddata, "char16_t")) - goto clean; - ++ddata->cur; - break; - case 'v': - /* gcc vector_size extension. */ - ++ddata->cur; - if (*ddata->cur == '_') { - ++ddata->cur; - if (!cpp_demangle_read_expression_flat(ddata, - &exp_str)) - goto clean; - if (!VEC_PUSH_STR(&v.ext_name, exp_str)) - goto clean; - } else { - if (!cpp_demangle_read_number_as_string(ddata, - &num_str)) - goto clean; - if (!VEC_PUSH_STR(&v.ext_name, num_str)) - goto clean; - } - if (*ddata->cur != '_') - goto clean; - ++ddata->cur; - if (!vector_type_qualifier_push(&v, TYPE_VEC)) - goto clean; - if (td) - td->firstp = false; - goto again; - default: - goto clean; - } - goto rtn; - - case 'e': - /* long double */ - if (!DEM_PUSH_STR(ddata, "long double")) - goto clean; - ++ddata->cur; - goto rtn; - - case 'E': - /* unexpected end except ref-qualifiers */ - if (ddata->ref_qualifier && ddata->is_functype) { - skip_ref_qualifier = true; - /* Pop the delimiter. */ - cpp_demangle_pop_str(ddata); - goto rtn; - } - goto clean; - - case 'f': - /* float */ - if (!DEM_PUSH_STR(ddata, "float")) - goto clean; - ++ddata->cur; - goto rtn; - - case 'F': - /* function */ - if (!cpp_demangle_read_function(ddata, &extern_c, &v)) - goto clean; - is_builtin = 0; - goto rtn; - - case 'g': - /* __float128 */ - if (!DEM_PUSH_STR(ddata, "__float128")) - goto clean; - ++ddata->cur; - goto rtn; - - case 'G': - /* imaginary */ - if (!vector_type_qualifier_push(&v, TYPE_IMG)) - goto clean; - ++ddata->cur; - if (td) - td->firstp = false; - goto again; - - case 'h': - /* unsigned char */ - if (!DEM_PUSH_STR(ddata, "unsigned char")) - goto clean; - ++ddata->cur; - goto rtn; - - case 'i': - /* int */ - if (!DEM_PUSH_STR(ddata, "int")) - goto clean; - ++ddata->cur; - goto rtn; - - case 'I': - /* template args. */ - /* 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); - goto rtn; - - case 'j': - /* unsigned int */ - if (!DEM_PUSH_STR(ddata, "unsigned int")) - goto clean; - ++ddata->cur; - goto rtn; - - case 'K': - /* const */ - if (!vector_type_qualifier_push(&v, TYPE_CST)) - goto clean; - ++ddata->cur; - if (td) - td->firstp = false; - goto again; - - case 'l': - /* long */ - if (!DEM_PUSH_STR(ddata, "long")) - goto clean; - ++ddata->cur; - goto rtn; - - case 'm': - /* unsigned long */ - if (!DEM_PUSH_STR(ddata, "unsigned long")) - goto clean; - - ++ddata->cur; - - goto rtn; - case 'M': - /* pointer to member */ - if (!cpp_demangle_read_pointer_to_member(ddata, &v)) - goto clean; - is_builtin = 0; - goto rtn; - - case 'n': - /* __int128 */ - if (!DEM_PUSH_STR(ddata, "__int128")) - goto clean; - ++ddata->cur; - goto rtn; - - case 'o': - /* unsigned __int128 */ - if (!DEM_PUSH_STR(ddata, "unsigned __int128")) - goto clean; - ++ddata->cur; - goto rtn; - - case 'O': - /* rvalue reference */ - if (ddata->ref_qualifier) - goto clean; - if (!vector_type_qualifier_push(&v, TYPE_RREF)) - goto clean; - ddata->ref_qualifier = true; - ddata->ref_qualifier_type = TYPE_RREF; - ++ddata->cur; - if (td) - td->firstp = false; - goto again; - - case 'P': - /* pointer */ - if (!vector_type_qualifier_push(&v, TYPE_PTR)) - goto clean; - ++ddata->cur; - if (td) - td->firstp = false; - goto again; - - case 'r': - /* restrict */ - if (!vector_type_qualifier_push(&v, TYPE_RST)) - goto clean; - ++ddata->cur; - if (td) - td->firstp = false; - goto again; - - case 'R': - /* reference */ - if (ddata->ref_qualifier) - goto clean; - if (!vector_type_qualifier_push(&v, TYPE_REF)) - goto clean; - ddata->ref_qualifier = true; - ddata->ref_qualifier_type = TYPE_REF; - ++ddata->cur; - if (td) - td->firstp = false; - goto again; - - case 's': - /* short, local string */ - if (!DEM_PUSH_STR(ddata, "short")) - goto clean; - ++ddata->cur; - goto rtn; - - case 'S': - /* substitution */ - if (!cpp_demangle_read_subst(ddata)) - goto clean; - is_builtin = 0; - goto rtn; - - case 't': - /* unsigned short */ - if (!DEM_PUSH_STR(ddata, "unsigned short")) - goto clean; - ++ddata->cur; - goto rtn; - - case 'T': - /* template parameter */ - if (!cpp_demangle_read_tmpl_param(ddata)) - goto clean; - is_builtin = 0; - goto rtn; - - case 'u': - /* vendor extended builtin */ - ++ddata->cur; - if (!cpp_demangle_read_sname(ddata)) - goto clean; - is_builtin = 0; - goto rtn; - - case 'U': - /* vendor extended type qualifier */ - ++ddata->cur; - if (!cpp_demangle_read_number(ddata, &len)) - goto clean; - if (len <= 0) - goto clean; - if (!vector_str_push(&v.ext_name, ddata->cur, len)) - goto clean; - ddata->cur += len; - if (!vector_type_qualifier_push(&v, TYPE_EXT)) - goto clean; - if (td) - td->firstp = false; - goto again; - - case 'v': - /* void */ - omit_void = false; - if (td && td->firstp) { - /* - * peek into next bytes and see if we should omit - * the "void". - */ - omit_void = true; - for (p = ddata->cur + 1; *p != '\0'; p++) { - if (*p == 'E') - break; - if (*p != 'R' && *p != 'O') { - omit_void = false; - break; - } - } - } - if (!omit_void && !DEM_PUSH_STR(ddata, "void")) - goto clean; - ++ddata->cur; - goto rtn; - - case 'V': - /* volatile */ - if (!vector_type_qualifier_push(&v, TYPE_VAT)) - goto clean; - ++ddata->cur; - if (td) - td->firstp = false; - goto again; - - case 'w': - /* wchar_t */ - if (!DEM_PUSH_STR(ddata, "wchar_t")) - goto clean; - ++ddata->cur; - goto rtn; - - case 'x': - /* long long */ - if (!DEM_PUSH_STR(ddata, "long long")) - goto clean; - ++ddata->cur; - goto rtn; - - case 'y': - /* unsigned long long */ - if (!DEM_PUSH_STR(ddata, "unsigned long long")) - goto clean; - ++ddata->cur; - goto rtn; - - case 'z': - /* ellipsis */ - if (!DEM_PUSH_STR(ddata, "...")) - goto clean; - ++ddata->cur; - goto rtn; - } - - if (!cpp_demangle_read_name(ddata)) - goto clean; - - is_builtin = 0; -rtn: - - type_str = vector_str_substr(output, p_idx, output->size - 1, - &type_str_len); - - if (is_builtin == 0) { - if (!vector_str_find(&ddata->subst, type_str, type_str_len) && - !vector_str_push(&ddata->subst, type_str, type_str_len)) - goto clean; - } - - if (!skip_ref_qualifier && - !cpp_demangle_push_type_qualifier(ddata, &v, type_str)) - goto clean; - - 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); -} - -/* - * 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 == NULL || *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 == NULL) - return (0); - if ((len = strlen(ddata->last_sname)) == 0) - 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 == NULL) - return (0); - if ((len = strlen(ddata->last_sname)) == 0) - 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) != 0) - 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 == NULL || *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) != 0) - ++ddata->cur; - } - - return (1); -} - -static int -cpp_demangle_read_v_offset(struct cpp_demangle_data *ddata) -{ - - if (ddata == NULL) - 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)); -} - -/* - * 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); -} - -static struct read_cmd_item * -vector_read_cmd_find(struct vector_read_cmd *v, enum read_cmd dst) -{ - int i; - - if (v == NULL || dst == READ_FAIL) - return (NULL); - - for (i = (int) v->size - 1; i >= 0; i--) - if (v->r_container[i].cmd == dst) - return (&v->r_container[i]); - - return (NULL); -} - -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) -{ - struct read_cmd_item *tmp_r_ctn; - size_t tmp_cap; - size_t i; - - if (v == NULL) - 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); - 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; - } - - v->r_container[v->size].cmd = cmd; - 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); -} - -/* size, capacity, ext_name */ -static int -vector_type_qualifier_init(struct vector_type_qualifier *v) -{ - - if (v == NULL) - return (0); - - v->size = 0; - v->capacity = VECTOR_DEF_CAPACITY; - - if ((v->q_container = malloc(sizeof(enum type_qualifier) * v->capacity)) - == NULL) - return (0); - - assert(v->q_container != NULL); - - if (!vector_str_init(&v->ext_name)) { - free(v->q_container); - return (0); - } - - return (1); -} - -static int -vector_type_qualifier_push(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->size == v->capacity) { - tmp_cap = BUFFER_GROW(v->capacity); - if ((tmp_ctn = malloc(sizeof(enum type_qualifier) * tmp_cap)) - == NULL) - 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; - } - - v->q_container[v->size] = t; - ++v->size; - - return (1); -} - -/** - * @brief Demangling routine. - * ABI-mandated entry point in the C++ runtime library for demangling. - * - * @param __mangled_name A NUL-terminated character string - * containing the name to be demangled. - * - * @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. - * - * @param __length If @a __length is non-null, the length of the - * buffer containing the demangled name is placed in @a *__length. - * - * @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. - * - * @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. - */ -char * -__cxa_demangle(const char* mangled_name, - char* buf, - size_t* n, - int* status) -{ - // 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); - } - else - { - if (status) - { - *status = -2; - } - return NULL; - } - return buf; -} 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/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/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..9fb38e00c 100644 --- a/libc/stdio/fgets_unlocked.c +++ b/libc/stdio/fgets_unlocked.c @@ -48,21 +48,20 @@ 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) { - continue; - } else { - break; - } + break; } *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..d76bd3216 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,40 @@ #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) { + ssize_t rc; + size_t got, toto; + toto = 0; + do { + if ((rc = readv(fd, iov, iovlen)) == -1) { + if (toto) { + if (errno == EINTR) + continue; + return toto; + } + 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 +71,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,51 +87,79 @@ 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 (f->bufmode == _IONBF) { + rc = readv(f->fd, iov, 2); + } else { + rc = readvall(f->fd, iov, 2); + } + if (rc == -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/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/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/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..151136ac9 100644 --- a/libc/stdio/printargs.c +++ b/libc/stdio/printargs.c @@ -43,7 +43,6 @@ #include "libc/nt/startupinfo.h" #include "libc/nt/struct/ldrdatatableentry.h" #include "libc/nt/struct/startupinfo.h" -#include "libc/nt/struct/teb.h" #include "libc/runtime/clktck.h" #include "libc/runtime/internal.h" #include "libc/runtime/memtrack.internal.h" @@ -83,19 +82,6 @@ static const char *FindNameById(const struct IdName *names, unsigned long id) { return NULL; } -static void PrintDependencies(const char *prologue) { -#ifdef __x86_64__ - struct NtLinkedList *head = &NtGetPeb()->Ldr->InLoadOrderModuleList; - struct NtLinkedList *ldr = head->Next; - do { - const struct NtLdrDataTableEntry *dll = - (const struct NtLdrDataTableEntry *)ldr; - PRINT(" ☼ %.*!hs (%'zukb @ %p)", dll->FullDllName.Length, - dll->FullDllName.Data, dll->SizeOfImage / 1024, dll->DllBase); - } while ((ldr = ldr->Next) && ldr != head); -#endif -} - static void Print(const char *prologue) { } @@ -187,7 +173,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 +250,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 +303,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 +371,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 +497,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 +579,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 +605,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)); @@ -625,29 +679,6 @@ textstartup void __printargs(const char *prologue) { GetStdHandle(kNtStdErrorHandle)); if (GetConsoleMode(GetStdHandle(kNtStdErrorHandle), &cm)) PRINT(" %s", DescribeNtConsoleOutFlags(cm)); - -#ifdef __x86_64__ - PRINT(""); - PRINT("TEB"); - PRINT(" ☼ gs:0x%02x %s = %p", 0x00, "NtGetSeh()", _NtGetSeh()); - PRINT(" ☼ gs:0x%02x %s = %p", 0x08, "NtGetStackHigh()", _NtGetStackHigh()); - PRINT(" ☼ gs:0x%02x %s = %p", 0x10, "NtGetStackLow()", _NtGetStackLow()); - PRINT(" ☼ gs:0x%02x %s = %p", 0x18, "_NtGetSubsystemTib()", - _NtGetSubsystemTib()); - PRINT(" ☼ gs:0x%02x %s = %p", 0x20, "NtGetFib()", _NtGetFib()); - PRINT(" ☼ gs:0x%02x %s = %p", 0x30, "NtGetTeb()", NtGetTeb()); - PRINT(" ☼ gs:0x%02x %s = %p", 0x38, "NtGetEnv()", _NtGetEnv()); - PRINT(" ☼ gs:0x%02x %s = %p", 0x40, "NtGetPid()", NtGetPid()); - PRINT(" ☼ gs:0x%02x %s = %p", 0x48, "NtGetTid()", NtGetTid()); - PRINT(" ☼ gs:0x%02x %s = %p", 0x50, "NtGetRpc()", _NtGetRpc()); - PRINT(" ☼ gs:0x%02x %s = %p", 0x58, "NtGetTls()", _NtGetTls()); - PRINT(" ☼ gs:0x%02x %s = %p", 0x60, "NtGetPeb()", NtGetPeb()); - PRINT(" ☼ gs:0x%02x %s = %p", 0x68, "NtGetErr()", NtGetErr()); -#endif - - PRINT(""); - PRINT("DEPENDENCIES"); - PrintDependencies(prologue); } PRINT(""); 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/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_ */ 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/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); } 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/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..ad91f88d8 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)) { @@ -551,9 +553,10 @@ int __vcscanf(int callback(void *), // items = -1; goto Done; } else if (rawmode && j != width) { - /* The C standard says that %c "matches a sequence of characters of - * **exactly** the number specified by the field width". If we have - * fewer characters, what we've just read is invalid. */ + /* The C standard says that %c "matches a sequence of characters + * of + * **exactly** the number specified by the field width". If we + * have fewer characters, what we've just read is invalid. */ goto Done; } else if (!rawmode && j < bufsize) { if (charbytes == sizeof(char)) { @@ -574,7 +577,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 +593,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..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; @@ -63,11 +63,12 @@ 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; - if (__robust_writev(t.fd, iov, 1) == -1) { + if (writev(t.fd, iov, 1) == -1) { return -1; } t.t += t.n; 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/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/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/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/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/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/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/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/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/iswpunct.c b/libc/str/iswpunct.c index 6ba67e833..96c16f34b 100644 --- a/libc/str/iswpunct.c +++ b/libc/str/iswpunct.c @@ -372,76 +372,76 @@ int iswpunct(wint_t c) { case u'⹍': // PARAGRAPHUS MARK (0x2e4d Po) case u'⹎': // PUNCTUS ELEVATUS MARK (0x2e4e Po) case u'⹏': // CORNISH VERSE DIVIDER (0x2e4f Po) - case u'、': // IDEOGRAPHIC COMMA (0x3001 Po) - case u'。': // IDEOGRAPHIC FULL STOP (0x3002 Po) - case u'〃': // DITTO MARK (0x3003 Po) - case u'〈': // LEFT ANGLE BRACKET (0x3008 Ps) - case u'〉': // RIGHT ANGLE BRACKET (0x3009 Pe) - case u'《': // LEFT DOUBLE ANGLE BRACKET (0x300a Ps) - case u'》': // RIGHT DOUBLE ANGLE BRACKET (0x300b Pe) - case u'「': // LEFT CORNER BRACKET (0x300c Ps) - case u'」': // RIGHT CORNER BRACKET (0x300d Pe) - case u'『': // LEFT WHITE CORNER BRACKET (0x300e Ps) - case u'』': // RIGHT WHITE CORNER BRACKET (0x300f Pe) - case u'【': // LEFT BLACK LENTICULAR BRACKET (0x3010 Ps) - case u'】': // RIGHT BLACK LENTICULAR BRACKET (0x3011 Pe) - case u'〔': // LEFT TORTOISE SHELL BRACKET (0x3014 Ps) - case u'〕': // RIGHT TORTOISE SHELL BRACKET (0x3015 Pe) - case u'〖': // LEFT WHITE LENTICULAR BRACKET (0x3016 Ps) - case u'〗': // RIGHT WHITE LENTICULAR BRACKET (0x3017 Pe) - case u'〘': // LEFT WHITE TORTOISE SHELL BRACKET (0x3018 Ps) - case u'〙': // RIGHT WHITE TORTOISE SHELL BRACKET (0x3019 Pe) - case u'〚': // LEFT WHITE SQUARE BRACKET (0x301a Ps) - case u'〛': // RIGHT WHITE SQUARE BRACKET (0x301b Pe) - case u'〜': // WAVE DASH (0x301c Pd) - case u'〝': // REVERSED DOUBLE PRIME QUOTATION MARK (0x301d Ps) - case u'〞': // DOUBLE PRIME QUOTATION MARK (0x301e Pe) - case u'〟': // LOW DOUBLE PRIME QUOTATION MARK (0x301f Pe) - case u'〰': // WAVY DASH (0x3030 Pd) - case u'〽': // PART ALTERNATION MARK (0x303d Po) - case u'゠': // KATAKANA-HIRAGANA DOUBLE HYPHEN (0x30a0 Pd) - case u'・': // KATAKANA MIDDLE DOT (0x30fb Po) - case u'꓾': // LISU PUNCTUATION COMMA (0xa4fe Po) - case u'꓿': // LISU PUNCTUATION FULL STOP (0xa4ff Po) - case u'꘍': // VAI COMMA (0xa60d Po) - case u'꘎': // VAI FULL STOP (0xa60e Po) - case u'꘏': // VAI QUESTION MARK (0xa60f Po) - case u'꙾': // CYRILLIC KAVYKA (0xa67e Po) - case u'꡴': // PHAGS-PA SINGLE HEAD MARK (0xa874 Po) - case u'꡵': // PHAGS-PA DOUBLE HEAD MARK (0xa875 Po) - case u'꡶': // PHAGS-PA MARK SHAD (0xa876 Po) - case u'꡷': // PHAGS-PA MARK DOUBLE SHAD (0xa877 Po) - case u'꣎': // SAURASHTRA DANDA (0xa8ce Po) - case u'꣏': // SAURASHTRA DOUBLE DANDA (0xa8cf Po) - case u'꣸': // DEVANAGARI SIGN PUSHPIKA (0xa8f8 Po) - case u'꣹': // DEVANAGARI GAP FILLER (0xa8f9 Po) - case u'꣺': // DEVANAGARI CARET (0xa8fa Po) - case u'꣼': // DEVANAGARI SIGN SIDDHAM (0xa8fc Po) - case u'꧁': // JAVANESE LEFT RERENGGAN (0xa9c1 Po) - case u'꧂': // JAVANESE RIGHT RERENGGAN (0xa9c2 Po) - case u'꧃': // JAVANESE PADA ANDAP (0xa9c3 Po) - case u'꧄': // JAVANESE PADA MADYA (0xa9c4 Po) - case u'꧅': // JAVANESE PADA LUHUR (0xa9c5 Po) - case u'꧆': // JAVANESE PADA WINDU (0xa9c6 Po) - case u'꧇': // JAVANESE PADA PANGKAT (0xa9c7 Po) - case u'꧈': // JAVANESE PADA LINGSA (0xa9c8 Po) - case u'꧉': // JAVANESE PADA LUNGSI (0xa9c9 Po) - case u'꧊': // JAVANESE PADA ADEG (0xa9ca Po) - case u'꧋': // JAVANESE PADA ADEG ADEG (0xa9cb Po) - case u'꧌': // JAVANESE PADA PISELEH (0xa9cc Po) - case u'꧍': // JAVANESE TURNED PADA PISELEH (0xa9cd Po) - case u'꧞': // JAVANESE PADA TIRTA TUMETES (0xa9de Po) - case u'꧟': // JAVANESE PADA ISEN-ISEN (0xa9df Po) - case u'꩜': // CHAM PUNCTUATION SPIRAL (0xaa5c Po) - case u'꩝': // CHAM PUNCTUATION DANDA (0xaa5d Po) - case u'꩞': // CHAM PUNCTUATION DOUBLE DANDA (0xaa5e Po) - case u'꩟': // CHAM PUNCTUATION TRIPLE DANDA (0xaa5f Po) - case u'꫞': // TAI VIET SYMBOL HO HOI (0xaade Po) - case u'꫟': // TAI VIET SYMBOL KOI KOI (0xaadf Po) - case u'꫰': // MEETEI MAYEK CHEIKHAN (0xaaf0 Po) - case u'꫱': // MEETEI MAYEK AHANG KHUDAM (0xaaf1 Po) - case u'꯫': // MEETEI MAYEK CHEIKHEI (0xabeb Po) - case u'︐': // PRESENTATION FORM FOR VERTICAL COMMA (0xfe10 Po) + case u'、': // IDEOGRAPHIC COMMA (0x3001 Po) + case u'。': // IDEOGRAPHIC FULL STOP (0x3002 Po) + case u'〃': // DITTO MARK (0x3003 Po) + case u'〈': // LEFT ANGLE BRACKET (0x3008 Ps) + case u'〉': // RIGHT ANGLE BRACKET (0x3009 Pe) + case u'《': // LEFT DOUBLE ANGLE BRACKET (0x300a Ps) + case u'》': // RIGHT DOUBLE ANGLE BRACKET (0x300b Pe) + case u'「': // LEFT CORNER BRACKET (0x300c Ps) + case u'」': // RIGHT CORNER BRACKET (0x300d Pe) + case u'『': // LEFT WHITE CORNER BRACKET (0x300e Ps) + case u'』': // RIGHT WHITE CORNER BRACKET (0x300f Pe) + case u'【': // LEFT BLACK LENTICULAR BRACKET (0x3010 Ps) + case u'】': // RIGHT BLACK LENTICULAR BRACKET (0x3011 Pe) + case u'〔': // LEFT TORTOISE SHELL BRACKET (0x3014 Ps) + case u'〕': // RIGHT TORTOISE SHELL BRACKET (0x3015 Pe) + case u'〖': // LEFT WHITE LENTICULAR BRACKET (0x3016 Ps) + case u'〗': // RIGHT WHITE LENTICULAR BRACKET (0x3017 Pe) + case u'〘': // LEFT WHITE TORTOISE SHELL BRACKET (0x3018 Ps) + case u'〙': // RIGHT WHITE TORTOISE SHELL BRACKET (0x3019 Pe) + case u'〚': // LEFT WHITE SQUARE BRACKET (0x301a Ps) + case u'〛': // RIGHT WHITE SQUARE BRACKET (0x301b Pe) + case u'〜': // WAVE DASH (0x301c Pd) + case u'〝': // REVERSED DOUBLE PRIME QUOTATION MARK (0x301d Ps) + case u'〞': // DOUBLE PRIME QUOTATION MARK (0x301e Pe) + case u'〟': // LOW DOUBLE PRIME QUOTATION MARK (0x301f Pe) + case u'〰': // WAVY DASH (0x3030 Pd) + case u'〽': // PART ALTERNATION MARK (0x303d Po) + case u'゠': // KATAKANA-HIRAGANA DOUBLE HYPHEN (0x30a0 Pd) + case u'・': // KATAKANA MIDDLE DOT (0x30fb Po) + case u'꓾': // LISU PUNCTUATION COMMA (0xa4fe Po) + case u'꓿': // LISU PUNCTUATION FULL STOP (0xa4ff Po) + case u'꘍': // VAI COMMA (0xa60d Po) + case u'꘎': // VAI FULL STOP (0xa60e Po) + case u'꘏': // VAI QUESTION MARK (0xa60f Po) + case u'꙾': // CYRILLIC KAVYKA (0xa67e Po) + case u'꡴': // PHAGS-PA SINGLE HEAD MARK (0xa874 Po) + case u'꡵': // PHAGS-PA DOUBLE HEAD MARK (0xa875 Po) + case u'꡶': // PHAGS-PA MARK SHAD (0xa876 Po) + case u'꡷': // PHAGS-PA MARK DOUBLE SHAD (0xa877 Po) + case u'꣎': // SAURASHTRA DANDA (0xa8ce Po) + case u'꣏': // SAURASHTRA DOUBLE DANDA (0xa8cf Po) + case u'꣸': // DEVANAGARI SIGN PUSHPIKA (0xa8f8 Po) + case u'꣹': // DEVANAGARI GAP FILLER (0xa8f9 Po) + case u'꣺': // DEVANAGARI CARET (0xa8fa Po) + case u'꣼': // DEVANAGARI SIGN SIDDHAM (0xa8fc Po) + case u'꧁': // JAVANESE LEFT RERENGGAN (0xa9c1 Po) + case u'꧂': // JAVANESE RIGHT RERENGGAN (0xa9c2 Po) + case u'꧃': // JAVANESE PADA ANDAP (0xa9c3 Po) + case u'꧄': // JAVANESE PADA MADYA (0xa9c4 Po) + case u'꧅': // JAVANESE PADA LUHUR (0xa9c5 Po) + case u'꧆': // JAVANESE PADA WINDU (0xa9c6 Po) + case u'꧇': // JAVANESE PADA PANGKAT (0xa9c7 Po) + case u'꧈': // JAVANESE PADA LINGSA (0xa9c8 Po) + case u'꧉': // JAVANESE PADA LUNGSI (0xa9c9 Po) + case u'꧊': // JAVANESE PADA ADEG (0xa9ca Po) + case u'꧋': // JAVANESE PADA ADEG ADEG (0xa9cb Po) + case u'꧌': // JAVANESE PADA PISELEH (0xa9cc Po) + case u'꧍': // JAVANESE TURNED PADA PISELEH (0xa9cd Po) + case u'꧞': // JAVANESE PADA TIRTA TUMETES (0xa9de Po) + case u'꧟': // JAVANESE PADA ISEN-ISEN (0xa9df Po) + case u'꩜': // CHAM PUNCTUATION SPIRAL (0xaa5c Po) + case u'꩝': // CHAM PUNCTUATION DANDA (0xaa5d Po) + case u'꩞': // CHAM PUNCTUATION DOUBLE DANDA (0xaa5e Po) + case u'꩟': // CHAM PUNCTUATION TRIPLE DANDA (0xaa5f Po) + case u'꫞': // TAI VIET SYMBOL HO HOI (0xaade Po) + case u'꫟': // TAI VIET SYMBOL KOI KOI (0xaadf Po) + case u'꫰': // MEETEI MAYEK CHEIKHAN (0xaaf0 Po) + case u'꫱': // MEETEI MAYEK AHANG KHUDAM (0xaaf1 Po) + case u'꯫': // MEETEI MAYEK CHEIKHEI (0xabeb Po) + case u'︐': // PRESENTATION FORM FOR VERTICAL COMMA (0xfe10 Po) case u'︑': // PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA (0xfe11 Po) case u'︒': // PRESENTATION FORM FOR VERTICAL IDEO FULL STOP (0xfe12 Po) case u'︓': // PRESENTATION FORM FOR VERTICAL COLON (0xfe13 Po) 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/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 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..a31f9fd61 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 @@ -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/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..832501510 100644 --- a/libc/str/lz4cpy.c +++ b/libc/str/lz4cpy.c @@ -16,10 +16,10 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/serialize.h" #include "libc/intrin/pushpop.internal.h" #include "libc/intrin/repmovsb.h" #include "libc/nexgen32e/kompressor.h" +#include "libc/serialize.h" #include "libc/str/str.h" /** @@ -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/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/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/tpdecodecb.internal.h b/libc/str/tpdecodecb.internal.h index eddbdfd26..64ba05670 100644 --- a/libc/str/tpdecodecb.internal.h +++ b/libc/str/tpdecodecb.internal.h @@ -13,25 +13,30 @@ forceinline int tpdecodecb(wint_t *out, int first, int get(void *arg, uint32_t i), void *arg) { uint32_t wc, cb, need, msb, j, i = 1; - if (__builtin_expect((wc = first) == -1, 0)) return -1; + if (__builtin_expect((wc = first) == -1, 0)) + return -1; while (__builtin_expect((wc & 0b11000000) == 0b10000000, 0)) { - if ((wc = get(arg, i++)) == -1) return -1; + if ((wc = get(arg, i++)) == -1) + return -1; } if (__builtin_expect(!(0 <= wc && wc <= 0x7F), 0)) { msb = wc < 252 ? bsr(~wc & 0xff) : 1; need = 7 - msb; wc &= ((1u << msb) - 1) | 0b00000011; for (j = 1; j < need; ++j) { - if ((cb = get(arg, i++)) == -1) return -1; + if ((cb = get(arg, i++)) == -1) + return -1; if ((cb & 0b11000000) == 0b10000000) { wc = wc << 6 | (cb & 0b00111111); } else { - if (out) *out = u'\xFFFD'; + if (out) + *out = u'\xFFFD'; return -1; } } } - if (__builtin_expect(!!out, 1)) *out = (wint_t)wc; + if (__builtin_expect(!!out, 1)) + *out = (wint_t)wc; return i; } 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/wctype.c b/libc/str/wctype.c index 182f47d5b..588439a25 100644 --- a/libc/str/wctype.c +++ b/libc/str/wctype.c @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/serialize.h" #include "libc/macros.internal.h" +#include "libc/serialize.h" #include "libc/str/str.h" static const char kWcTypeNames[][8] = { 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/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 1242f1e4a..158a6df6d 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! @@ -511,6 +512,8 @@ syscon compat SA_ONESHOT 0x80000000 0x80000000 4 4 4 4 4 0x800000 # The New Technology NT is polyfilled as Linux. # Unsupported values are encoded as 0x80000000. # +# NOTE: Some of these Windows constants are duplicated in sigcrashsig.c +# # group name GNU/Systemd GNU/Systemd (Aarch64) XNU's Not UNIX! MacOS (Arm64) FreeBSD OpenBSD NetBSD The New Technology Commentary syscon sicode SI_USER 0 0 0x010001 0x010001 0x010001 0 0 0 # sent by kill(2); openbsd defines si_code<=0 as originating from user syscon sicode SI_QUEUE -1 -1 0x010002 0x010002 0x010002 -2 -1 -1 # sent by sigqueue(2) @@ -1597,7 +1600,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/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/__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/consts/fileno.h b/libc/sysv/consts/fileno.h index f8294d299..a9233f1e1 100644 --- a/libc/sysv/consts/fileno.h +++ b/libc/sysv/consts/fileno.h @@ -1,7 +1,7 @@ #ifndef COSMOPOLITAN_LIBC_SYSV_CONSTS_FILENO_H_ #define COSMOPOLITAN_LIBC_SYSV_CONSTS_FILENO_H_ -#define STDIN_FILENO 0 +#define STDIN_FILENO 0 #define STDOUT_FILENO 1 #define STDERR_FILENO 2 diff --git a/libc/sysv/consts/icmp6.h b/libc/sysv/consts/icmp6.h index 505a590b0..43ce452b8 100644 --- a/libc/sysv/consts/icmp6.h +++ b/libc/sysv/consts/icmp6.h @@ -1,39 +1,36 @@ #ifndef COSMOPOLITAN_LIBC_SYSV_CONSTS_ICMP6_H_ #define COSMOPOLITAN_LIBC_SYSV_CONSTS_ICMP6_H_ -#define ICMP6_DST_UNREACH ICMP6_DST_UNREACH -#define ICMP6_DST_UNREACH_ADDR ICMP6_DST_UNREACH_ADDR -#define ICMP6_DST_UNREACH_ADMIN ICMP6_DST_UNREACH_ADMIN -#define ICMP6_DST_UNREACH_BEYONDSCOPE ICMP6_DST_UNREACH_BEYONDSCOPE -#define ICMP6_DST_UNREACH_NOPORT ICMP6_DST_UNREACH_NOPORT -#define ICMP6_DST_UNREACH_NOROUTE ICMP6_DST_UNREACH_NOROUTE -#define ICMP6_ECHO_REPLY ICMP6_ECHO_REPLY -#define ICMP6_ECHO_REQUEST ICMP6_ECHO_REQUEST -#define ICMP6_FILTER ICMP6_FILTER -#define ICMP6_INFOMSG_MASK ICMP6_INFOMSG_MASK -#define ICMP6_PACKET_TOO_BIG ICMP6_PACKET_TOO_BIG -#define ICMP6_PARAMPROB_HEADER ICMP6_PARAMPROB_HEADER -#define ICMP6_PARAMPROB_NEXTHEADER ICMP6_PARAMPROB_NEXTHEADER -#define ICMP6_PARAMPROB_OPTION ICMP6_PARAMPROB_OPTION -#define ICMP6_PARAM_PROB ICMP6_PARAM_PROB -#define ICMP6_ROUTER_RENUMBERING ICMP6_ROUTER_RENUMBERING -#define ICMP6_RR_FLAGS_FORCEAPPLY ICMP6_RR_FLAGS_FORCEAPPLY -#define ICMP6_RR_FLAGS_PREVDONE ICMP6_RR_FLAGS_PREVDONE -#define ICMP6_RR_FLAGS_REQRESULT ICMP6_RR_FLAGS_REQRESULT -#define ICMP6_RR_FLAGS_SPECSITE ICMP6_RR_FLAGS_SPECSITE -#define ICMP6_RR_FLAGS_TEST ICMP6_RR_FLAGS_TEST -#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME \ - ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME -#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME \ - ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME -#define ICMP6_RR_PCOUSE_RAFLAGS_AUTO ICMP6_RR_PCOUSE_RAFLAGS_AUTO -#define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK ICMP6_RR_PCOUSE_RAFLAGS_ONLINK -#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN \ - ICMP6_RR_RESULT_FLAGS_FORBIDDEN -#define ICMP6_RR_RESULT_FLAGS_OOB ICMP6_RR_RESULT_FLAGS_OOB -#define ICMP6_TIME_EXCEEDED ICMP6_TIME_EXCEEDED -#define ICMP6_TIME_EXCEED_REASSEMBLY ICMP6_TIME_EXCEED_REASSEMBLY -#define ICMP6_TIME_EXCEED_TRANSIT ICMP6_TIME_EXCEED_TRANSIT +#define ICMP6_DST_UNREACH ICMP6_DST_UNREACH +#define ICMP6_DST_UNREACH_ADDR ICMP6_DST_UNREACH_ADDR +#define ICMP6_DST_UNREACH_ADMIN ICMP6_DST_UNREACH_ADMIN +#define ICMP6_DST_UNREACH_BEYONDSCOPE ICMP6_DST_UNREACH_BEYONDSCOPE +#define ICMP6_DST_UNREACH_NOPORT ICMP6_DST_UNREACH_NOPORT +#define ICMP6_DST_UNREACH_NOROUTE ICMP6_DST_UNREACH_NOROUTE +#define ICMP6_ECHO_REPLY ICMP6_ECHO_REPLY +#define ICMP6_ECHO_REQUEST ICMP6_ECHO_REQUEST +#define ICMP6_FILTER ICMP6_FILTER +#define ICMP6_INFOMSG_MASK ICMP6_INFOMSG_MASK +#define ICMP6_PACKET_TOO_BIG ICMP6_PACKET_TOO_BIG +#define ICMP6_PARAMPROB_HEADER ICMP6_PARAMPROB_HEADER +#define ICMP6_PARAMPROB_NEXTHEADER ICMP6_PARAMPROB_NEXTHEADER +#define ICMP6_PARAMPROB_OPTION ICMP6_PARAMPROB_OPTION +#define ICMP6_PARAM_PROB ICMP6_PARAM_PROB +#define ICMP6_ROUTER_RENUMBERING ICMP6_ROUTER_RENUMBERING +#define ICMP6_RR_FLAGS_FORCEAPPLY ICMP6_RR_FLAGS_FORCEAPPLY +#define ICMP6_RR_FLAGS_PREVDONE ICMP6_RR_FLAGS_PREVDONE +#define ICMP6_RR_FLAGS_REQRESULT ICMP6_RR_FLAGS_REQRESULT +#define ICMP6_RR_FLAGS_SPECSITE ICMP6_RR_FLAGS_SPECSITE +#define ICMP6_RR_FLAGS_TEST ICMP6_RR_FLAGS_TEST +#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME +#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME +#define ICMP6_RR_PCOUSE_RAFLAGS_AUTO ICMP6_RR_PCOUSE_RAFLAGS_AUTO +#define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK ICMP6_RR_PCOUSE_RAFLAGS_ONLINK +#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN ICMP6_RR_RESULT_FLAGS_FORBIDDEN +#define ICMP6_RR_RESULT_FLAGS_OOB ICMP6_RR_RESULT_FLAGS_OOB +#define ICMP6_TIME_EXCEEDED ICMP6_TIME_EXCEEDED +#define ICMP6_TIME_EXCEED_REASSEMBLY ICMP6_TIME_EXCEED_REASSEMBLY +#define ICMP6_TIME_EXCEED_TRANSIT ICMP6_TIME_EXCEED_TRANSIT COSMOPOLITAN_C_START_ diff --git a/libc/sysv/consts/iff.h b/libc/sysv/consts/iff.h index 404c24e52..a07298e3d 100644 --- a/libc/sysv/consts/iff.h +++ b/libc/sysv/consts/iff.h @@ -38,5 +38,4 @@ COSMOPOLITAN_C_END_ #define IFF_RUNNING IFF_RUNNING #define IFF_SLAVE IFF_SLAVE - #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_IFF_H_ */ diff --git a/libc/sysv/consts/ip.h b/libc/sysv/consts/ip.h index 158b8cae2..3d3c82b08 100644 --- a/libc/sysv/consts/ip.h +++ b/libc/sysv/consts/ip.h @@ -102,6 +102,5 @@ extern const int IP_XFRM_POLICY; #define IP_UNICAST_IF IP_UNICAST_IF #define IP_XFRM_POLICY IP_XFRM_POLICY - COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_IP_H_ */ diff --git a/libc/sysv/consts/ipv6.h b/libc/sysv/consts/ipv6.h index 44726a41b..4e5c5471c 100644 --- a/libc/sysv/consts/ipv6.h +++ b/libc/sysv/consts/ipv6.h @@ -122,6 +122,5 @@ extern const int IPV6_XFRM_POLICY; #define IPV6_V6ONLY IPV6_V6ONLY #define IPV6_XFRM_POLICY IPV6_XFRM_POLICY - COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_IPV6_H_ */ diff --git a/libc/sysv/consts/limits.h b/libc/sysv/consts/limits.h index dbe349748..a23ac9f6d 100644 --- a/libc/sysv/consts/limits.h +++ b/libc/sysv/consts/limits.h @@ -24,6 +24,5 @@ extern const int MAX_INPUT; #define MAX_CANON MAX_CANON #define MAX_INPUT MAX_INPUT - COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_LIMITS_H_ */ diff --git a/libc/sysv/consts/lio.h b/libc/sysv/consts/lio.h index b0fed0aad..94344a27b 100644 --- a/libc/sysv/consts/lio.h +++ b/libc/sysv/consts/lio.h @@ -1,11 +1,11 @@ #ifndef COSMOPOLITAN_LIBC_SYSV_CONSTS_LIO_H_ #define COSMOPOLITAN_LIBC_SYSV_CONSTS_LIO_H_ -#define LIO_NOP LIO_NOP +#define LIO_NOP LIO_NOP #define LIO_NOWAIT LIO_NOWAIT -#define LIO_READ LIO_READ -#define LIO_WAIT LIO_WAIT -#define LIO_WRITE LIO_WRITE +#define LIO_READ LIO_READ +#define LIO_WAIT LIO_WAIT +#define LIO_WRITE LIO_WRITE COSMOPOLITAN_C_START_ diff --git a/libc/sysv/consts/lock.h b/libc/sysv/consts/lock.h index 5fdcce2d3..9cf46025c 100644 --- a/libc/sysv/consts/lock.h +++ b/libc/sysv/consts/lock.h @@ -15,5 +15,4 @@ COSMOPOLITAN_C_END_ #define LOCK_SH LOCK_SH #define LOCK_UN LOCK_UN - #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_LOCK_H_ */ 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/libc/sysv/consts/mcast.h b/libc/sysv/consts/mcast.h index 4157a2e2d..82613f00e 100644 --- a/libc/sysv/consts/mcast.h +++ b/libc/sysv/consts/mcast.h @@ -1,15 +1,15 @@ #ifndef COSMOPOLITAN_LIBC_SYSV_CONSTS_MCAST_H_ #define COSMOPOLITAN_LIBC_SYSV_CONSTS_MCAST_H_ -#define MCAST_BLOCK_SOURCE MCAST_BLOCK_SOURCE -#define MCAST_EXCLUDE MCAST_EXCLUDE -#define MCAST_INCLUDE MCAST_INCLUDE -#define MCAST_JOIN_GROUP MCAST_JOIN_GROUP -#define MCAST_JOIN_SOURCE_GROUP MCAST_JOIN_SOURCE_GROUP -#define MCAST_LEAVE_GROUP MCAST_LEAVE_GROUP +#define MCAST_BLOCK_SOURCE MCAST_BLOCK_SOURCE +#define MCAST_EXCLUDE MCAST_EXCLUDE +#define MCAST_INCLUDE MCAST_INCLUDE +#define MCAST_JOIN_GROUP MCAST_JOIN_GROUP +#define MCAST_JOIN_SOURCE_GROUP MCAST_JOIN_SOURCE_GROUP +#define MCAST_LEAVE_GROUP MCAST_LEAVE_GROUP #define MCAST_LEAVE_SOURCE_GROUP MCAST_LEAVE_SOURCE_GROUP -#define MCAST_MSFILTER MCAST_MSFILTER -#define MCAST_UNBLOCK_SOURCE MCAST_UNBLOCK_SOURCE +#define MCAST_MSFILTER MCAST_MSFILTER +#define MCAST_UNBLOCK_SOURCE MCAST_UNBLOCK_SOURCE COSMOPOLITAN_C_START_ diff --git a/libc/sysv/consts/modem.h b/libc/sysv/consts/modem.h index 54d4a9be2..7d507523d 100644 --- a/libc/sysv/consts/modem.h +++ b/libc/sysv/consts/modem.h @@ -36,6 +36,5 @@ extern const int TIOCM_ST; #define TIOCMBIC TIOCMBIC #define TIOCMBIS TIOCMBIS - COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_MODEM_H_ */ diff --git a/libc/sysv/consts/mount.h b/libc/sysv/consts/mount.h index 21c7745e9..846c7f453 100644 --- a/libc/sysv/consts/mount.h +++ b/libc/sysv/consts/mount.h @@ -92,6 +92,5 @@ extern const int MNT_SNAPSHOT; #define MNT_NOCLUSTERW MNT_NOCLUSTERW #define MNT_SNAPSHOT MNT_SNAPSHOT - COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_MOUNT_H_ */ diff --git a/libc/sysv/consts/pf.h b/libc/sysv/consts/pf.h index 9f376da36..ebb0f04d1 100644 --- a/libc/sysv/consts/pf.h +++ b/libc/sysv/consts/pf.h @@ -94,6 +94,5 @@ extern const int PF_X25; #define PF_WANPIPE PF_WANPIPE #define PF_X25 PF_X25 - COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_PF_H_ */ diff --git a/libc/sysv/consts/poll.h b/libc/sysv/consts/poll.h index 7d44c2c32..79c1173c7 100644 --- a/libc/sysv/consts/poll.h +++ b/libc/sysv/consts/poll.h @@ -27,6 +27,5 @@ extern const int16_t POLLWRNORM; #define POLLWRBAND POLLWRBAND #define POLLWRNORM POLLWRNORM - COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_POLL_H_ */ diff --git a/libc/sysv/consts/posix.h b/libc/sysv/consts/posix.h index ff0978b50..8293b4297 100644 --- a/libc/sysv/consts/posix.h +++ b/libc/sysv/consts/posix.h @@ -22,6 +22,5 @@ extern const int POSIX_MADV_DONTNEED; #define POSIX_MADV_DONTNEED POSIX_MADV_DONTNEED - COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_POSIX_H_ */ diff --git a/libc/sysv/consts/pty.h b/libc/sysv/consts/pty.h index d0c02f8e5..c564e7469 100644 --- a/libc/sysv/consts/pty.h +++ b/libc/sysv/consts/pty.h @@ -23,6 +23,5 @@ extern const int TIOCPKT_STOP; #define TIOCPKT TIOCPKT - COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_PTY_H_ */ diff --git a/libc/sysv/consts/read.h b/libc/sysv/consts/read.h index edef19603..3fa23a933 100644 --- a/libc/sysv/consts/read.h +++ b/libc/sysv/consts/read.h @@ -1,18 +1,18 @@ #ifndef COSMOPOLITAN_LIBC_SYSV_CONSTS_READ_H_ #define COSMOPOLITAN_LIBC_SYSV_CONSTS_READ_H_ -#define READ_10 READ_10 -#define READ_12 READ_12 -#define READ_6 READ_6 -#define READ_BLOCK_LIMITS READ_BLOCK_LIMITS -#define READ_BUFFER READ_BUFFER -#define READ_CAPACITY READ_CAPACITY -#define READ_DEFECT_DATA READ_DEFECT_DATA +#define READ_10 READ_10 +#define READ_12 READ_12 +#define READ_6 READ_6 +#define READ_BLOCK_LIMITS READ_BLOCK_LIMITS +#define READ_BUFFER READ_BUFFER +#define READ_CAPACITY READ_CAPACITY +#define READ_DEFECT_DATA READ_DEFECT_DATA #define READ_ELEMENT_STATUS READ_ELEMENT_STATUS -#define READ_LONG READ_LONG -#define READ_POSITION READ_POSITION -#define READ_REVERSE READ_REVERSE -#define READ_TOC READ_TOC +#define READ_LONG READ_LONG +#define READ_POSITION READ_POSITION +#define READ_REVERSE READ_REVERSE +#define READ_TOC READ_TOC COSMOPOLITAN_C_START_ diff --git a/libc/sysv/consts/reboot.h b/libc/sysv/consts/reboot.h index 232b62657..c488af089 100644 --- a/libc/sysv/consts/reboot.h +++ b/libc/sysv/consts/reboot.h @@ -26,6 +26,5 @@ extern const unsigned RB_NOSYNC; #define RB_DISABLE_CAD RB_DISABLE_CAD #define RB_NOSYNC RB_NOSYNC - COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_REBOOT_H_ */ diff --git a/libc/sysv/consts/rlim.h b/libc/sysv/consts/rlim.h index c7f081ae1..f41aba12c 100644 --- a/libc/sysv/consts/rlim.h +++ b/libc/sysv/consts/rlim.h @@ -12,6 +12,5 @@ extern const uint64_t RLIM_SAVED_MAX; #define RLIM_SAVED_CUR RLIM_SAVED_CUR #define RLIM_SAVED_MAX RLIM_SAVED_MAX - COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_RLIM_H_ */ diff --git a/libc/sysv/consts/sa.h b/libc/sysv/consts/sa.h index b6a99776d..6abdd3481 100644 --- a/libc/sysv/consts/sa.h +++ b/libc/sysv/consts/sa.h @@ -22,6 +22,5 @@ extern const uint64_t SA_SIGINFO; #define SA_RESTART SA_RESTART #define SA_SIGINFO SA_SIGINFO - COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_SA_H_ */ diff --git a/libc/sysv/consts/sched.h b/libc/sysv/consts/sched.h index 9a960aa6e..532cf634b 100644 --- a/libc/sysv/consts/sched.h +++ b/libc/sysv/consts/sched.h @@ -19,6 +19,5 @@ extern const int SCHED_RR; #define SCHED_RESET_ON_FORK SCHED_RESET_ON_FORK #define SCHED_RR SCHED_RR - COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_SCHED_H_ */ diff --git a/libc/sysv/consts/scm.h b/libc/sysv/consts/scm.h index 60052b287..ec405ef23 100644 --- a/libc/sysv/consts/scm.h +++ b/libc/sysv/consts/scm.h @@ -17,5 +17,4 @@ COSMOPOLITAN_C_END_ #define SCM_TIMESTAMPNS SCM_TIMESTAMPNS #define SCM_WIFI_STATUS SCM_WIFI_STATUS - #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_SCM_H_ */ diff --git a/libc/sysv/consts/sf.h b/libc/sysv/consts/sf.h index 6e3d74aae..a153a308b 100644 --- a/libc/sysv/consts/sf.h +++ b/libc/sysv/consts/sf.h @@ -17,6 +17,5 @@ extern const int SF_SYNC; #define SF_NODISKIO SF_NODISKIO #define SF_SYNC SF_SYNC - COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_SF_H_ */ diff --git a/libc/sysv/consts/sicode.h b/libc/sysv/consts/sicode.h index 6fb95090a..b4eaad702 100644 --- a/libc/sysv/consts/sicode.h +++ b/libc/sysv/consts/sicode.h @@ -105,6 +105,5 @@ extern const int32_t SYS_USER_DISPATCH; #define SYS_SECCOMP SYS_SECCOMP #define SYS_USER_DISPATCH SYS_USER_DISPATCH - COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_SICODE_H_ */ diff --git a/libc/sysv/consts/st.h b/libc/sysv/consts/st.h index 13eeebb1d..293e4c2b9 100644 --- a/libc/sysv/consts/st.h +++ b/libc/sysv/consts/st.h @@ -28,6 +28,5 @@ extern const int ST_WRITE; #define ST_SYNCHRONOUS ST_SYNCHRONOUS #define ST_WRITE ST_WRITE - COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_ST_H_ */ diff --git a/libc/sysv/consts/tcp.h b/libc/sysv/consts/tcp.h index 3e92216c3..0ef015765 100644 --- a/libc/sysv/consts/tcp.h +++ b/libc/sysv/consts/tcp.h @@ -66,6 +66,5 @@ extern const int TCP_WINDOW_CLAMP; #define TCP_USER_TIMEOUT TCP_USER_TIMEOUT #define TCP_WINDOW_CLAMP TCP_WINDOW_CLAMP - COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_TCP_H_ */ diff --git a/libc/sysv/consts/utime.h b/libc/sysv/consts/utime.h index 8c63fc9e1..d87bda525 100644 --- a/libc/sysv/consts/utime.h +++ b/libc/sysv/consts/utime.h @@ -10,5 +10,4 @@ COSMOPOLITAN_C_END_ #define UTIME_NOW UTIME_NOW #define UTIME_OMIT UTIME_OMIT - #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_UTIME_H_ */ diff --git a/libc/sysv/consts/w.h b/libc/sysv/consts/w.h index 8f1b323ae..4bb937164 100644 --- a/libc/sysv/consts/w.h +++ b/libc/sysv/consts/w.h @@ -10,6 +10,5 @@ extern const int WCONTINUED; #define WUNTRACED WUNTRACED #define WCONTINUED WCONTINUED - COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_W_H_ */ 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 diff --git a/libc/testlib/BUILD.mk b/libc/testlib/BUILD.mk index 0346e351f..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 \ @@ -104,13 +106,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)))) @@ -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/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/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/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/ezbench.h b/libc/testlib/ezbench.h index 475562405..35fa23e33 100644 --- a/libc/testlib/ezbench.h +++ b/libc/testlib/ezbench.h @@ -35,7 +35,8 @@ COSMOPOLITAN_C_START_ } while (++Tries < EZBENCH_TRIES && \ (__testlib_getcore() != Core && \ __testlib_getinterrupts() > Interrupts)); \ - if (Tries == EZBENCH_TRIES) __testlib_ezbenchwarn(" speculative"); \ + if (Tries == EZBENCH_TRIES) \ + __testlib_ezbenchwarn(" speculative"); \ Tries = 0; \ do { \ __testlib_yield(); \ @@ -51,94 +52,100 @@ COSMOPOLITAN_C_START_ } while (++Tries < EZBENCH_TRIES && \ (__testlib_getcore() != Core && \ __testlib_getinterrupts() > Interrupts)); \ - if (Tries == EZBENCH_TRIES) __testlib_ezbenchwarn(" memory strict"); \ + if (Tries == EZBENCH_TRIES) \ + __testlib_ezbenchwarn(" memory strict"); \ __testlib_ezbenchreport( \ NAME, MAX(.001, Speculative - __testlib_ezbenchcontrol()), \ MAX(.001, MemoryStrict - __testlib_ezbenchcontrol())); \ } while (0) -#define EZBENCH3(NAME, NUM, INIT, EXPR) \ - do { \ - int Core, Tries, Interrupts; \ - double Speculative, MemoryStrict; \ - Tries = 0; \ - do { \ - __testlib_yield(); \ - Core = __testlib_getcore(); \ - Interrupts = __testlib_getinterrupts(); \ - INIT; \ - EXPR; \ - Speculative = BENCHLOOP(__startbench, __endbench, NUM, ({ \ - INIT; \ - __polluteregisters(); \ - }), \ - (EXPR)); \ - } while (++Tries < EZBENCH_TRIES && \ - (__testlib_getcore() != Core && \ - __testlib_getinterrupts() > Interrupts)); \ - if (Tries == EZBENCH_TRIES) __testlib_ezbenchwarn(" speculative"); \ - Tries = 0; \ - do { \ - __testlib_yield(); \ - Core = __testlib_getcore(); \ - Interrupts = __testlib_getinterrupts(); \ - INIT; \ - EXPR; \ - MemoryStrict = BENCHLOOP(__startbench_m, __endbench_m, NUM, ({ \ - INIT; \ - __polluteregisters(); \ - }), \ - (EXPR)); \ - } while (++Tries < EZBENCH_TRIES && \ - (__testlib_getcore() != Core && \ - __testlib_getinterrupts() > Interrupts)); \ - if (Tries == EZBENCH_TRIES) __testlib_ezbenchwarn(" memory strict"); \ - __testlib_ezbenchreport( \ - NAME, MAX(.001, Speculative - __testlib_ezbenchcontrol()), \ - MAX(.001, MemoryStrict - __testlib_ezbenchcontrol())); \ +#define EZBENCH3(NAME, NUM, INIT, EXPR) \ + do { \ + int Core, Tries, Interrupts; \ + double Speculative, MemoryStrict; \ + Tries = 0; \ + do { \ + __testlib_yield(); \ + Core = __testlib_getcore(); \ + Interrupts = __testlib_getinterrupts(); \ + INIT; \ + EXPR; \ + Speculative = BENCHLOOP(__startbench, __endbench, NUM, ({ \ + INIT; \ + __polluteregisters(); \ + }), \ + (EXPR)); \ + } while (++Tries < EZBENCH_TRIES && \ + (__testlib_getcore() != Core && \ + __testlib_getinterrupts() > Interrupts)); \ + if (Tries == EZBENCH_TRIES) \ + __testlib_ezbenchwarn(" speculative"); \ + Tries = 0; \ + do { \ + __testlib_yield(); \ + Core = __testlib_getcore(); \ + Interrupts = __testlib_getinterrupts(); \ + INIT; \ + EXPR; \ + MemoryStrict = BENCHLOOP(__startbench_m, __endbench_m, NUM, ({ \ + INIT; \ + __polluteregisters(); \ + }), \ + (EXPR)); \ + } while (++Tries < EZBENCH_TRIES && \ + (__testlib_getcore() != Core && \ + __testlib_getinterrupts() > Interrupts)); \ + if (Tries == EZBENCH_TRIES) \ + __testlib_ezbenchwarn(" memory strict"); \ + __testlib_ezbenchreport( \ + NAME, MAX(.001, Speculative - __testlib_ezbenchcontrol()), \ + MAX(.001, MemoryStrict - __testlib_ezbenchcontrol())); \ } while (0) -#define EZBENCH_C(NAME, CONTROL, EXPR) \ - do { \ - int Core, Tries, Interrupts; \ - double Control, Speculative, MemoryStrict; \ - Tries = 0; \ - do { \ - __testlib_yield(); \ - Core = __testlib_getcore(); \ - Interrupts = __testlib_getinterrupts(); \ - Control = BENCHLOOP(__startbench_m, __endbench_m, EZBENCH_COUNT, \ - ({ __polluteregisters(); }), (CONTROL)); \ - } while (++Tries < EZBENCH_TRIES && \ - (__testlib_getcore() != Core && \ - __testlib_getinterrupts() > Interrupts)); \ - if (Tries == EZBENCH_TRIES) __testlib_ezbenchwarn(" control"); \ - Tries = 0; \ - do { \ - __testlib_yield(); \ - Core = __testlib_getcore(); \ - Interrupts = __testlib_getinterrupts(); \ - EXPR; \ - Speculative = BENCHLOOP(__startbench, __endbench, EZBENCH_COUNT, \ - __polluteregisters(), (EXPR)); \ - } while (++Tries < EZBENCH_TRIES && \ - (__testlib_getcore() != Core && \ - __testlib_getinterrupts() > Interrupts)); \ - if (Tries == EZBENCH_TRIES) __testlib_ezbenchwarn(" speculative"); \ - Tries = 0; \ - do { \ - __testlib_yield(); \ - Core = __testlib_getcore(); \ - Interrupts = __testlib_getinterrupts(); \ - EXPR; \ - MemoryStrict = BENCHLOOP(__startbench_m, __endbench_m, 8, \ - ({ __polluteregisters(); }), (EXPR)); \ - } while (++Tries < EZBENCH_TRIES && \ - (__testlib_getcore() != Core && \ - __testlib_getinterrupts() > Interrupts)); \ - if (Tries == EZBENCH_TRIES) __testlib_ezbenchwarn(" memory strict"); \ - __testlib_ezbenchreport(NAME, MAX(.001, Speculative - Control), \ - MAX(.001, MemoryStrict - Control)); \ +#define EZBENCH_C(NAME, CONTROL, EXPR) \ + do { \ + int Core, Tries, Interrupts; \ + double Control, Speculative, MemoryStrict; \ + Tries = 0; \ + do { \ + __testlib_yield(); \ + Core = __testlib_getcore(); \ + Interrupts = __testlib_getinterrupts(); \ + Control = BENCHLOOP(__startbench_m, __endbench_m, EZBENCH_COUNT, \ + ({ __polluteregisters(); }), (CONTROL)); \ + } while (++Tries < EZBENCH_TRIES && \ + (__testlib_getcore() != Core && \ + __testlib_getinterrupts() > Interrupts)); \ + if (Tries == EZBENCH_TRIES) \ + __testlib_ezbenchwarn(" control"); \ + Tries = 0; \ + do { \ + __testlib_yield(); \ + Core = __testlib_getcore(); \ + Interrupts = __testlib_getinterrupts(); \ + EXPR; \ + Speculative = BENCHLOOP(__startbench, __endbench, EZBENCH_COUNT, \ + __polluteregisters(), (EXPR)); \ + } while (++Tries < EZBENCH_TRIES && \ + (__testlib_getcore() != Core && \ + __testlib_getinterrupts() > Interrupts)); \ + if (Tries == EZBENCH_TRIES) \ + __testlib_ezbenchwarn(" speculative"); \ + Tries = 0; \ + do { \ + __testlib_yield(); \ + Core = __testlib_getcore(); \ + Interrupts = __testlib_getinterrupts(); \ + EXPR; \ + MemoryStrict = BENCHLOOP(__startbench_m, __endbench_m, 8, \ + ({ __polluteregisters(); }), (EXPR)); \ + } while (++Tries < EZBENCH_TRIES && \ + (__testlib_getcore() != Core && \ + __testlib_getinterrupts() > Interrupts)); \ + if (Tries == EZBENCH_TRIES) \ + __testlib_ezbenchwarn(" memory strict"); \ + __testlib_ezbenchreport(NAME, MAX(.001, Speculative - Control), \ + MAX(.001, MemoryStrict - Control)); \ } while (0) #define EZBENCH_N(NAME, N, EXPR) \ @@ -156,7 +163,8 @@ COSMOPOLITAN_C_START_ EXPR; \ Speculative = BENCHLOOPER(__startbench, __endbench, 32, (EXPR)); \ } while (++Tries < EZBENCH_TRIES && !Speculative); \ - if (Tries == EZBENCH_TRIES) __testlib_ezbenchwarn(""); \ + if (Tries == EZBENCH_TRIES) \ + __testlib_ezbenchwarn(""); \ __testlib_ezbenchreport_n(NAME, 'n', N, Speculative); \ } while (0) 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/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/testlib.h b/libc/testlib/testlib.h index 07654b13d..8ff94e2da 100644 --- a/libc/testlib/testlib.h +++ b/libc/testlib/testlib.h @@ -420,8 +420,10 @@ forceinline void testlib_onfail2(bool isfatal) { forceinline void assertNotEquals(FILIFU_ARGS intptr_t donotwant, intptr_t got, const char *gotcode, bool isfatal) { ++g_testlib_ran; - if (got != donotwant) return; - if (g_testlib_shoulddebugbreak) DebugBreak(); + if (got != donotwant) + return; + if (g_testlib_shoulddebugbreak) + DebugBreak(); testlib_showerror(file, line, func, "assertNotEquals", "=", gotcode, testlib_formatint(got), testlib_formatint(donotwant)); testlib_onfail2(isfatal); @@ -455,8 +457,10 @@ forceinline void assertBetween(FILIFU_ARGS intptr_t beg, intptr_t end, intptr_t got, const char *gotcode, bool isfatal) { ++g_testlib_ran; - if (beg <= got && got <= end) return; - if (g_testlib_shoulddebugbreak) DebugBreak(); + if (beg <= got && got <= end) + return; + if (g_testlib_shoulddebugbreak) + DebugBreak(); testlib_showerror(file, line, func, "assertBetween", "∉", gotcode, testlib_formatint(got), testlib_formatrange(beg, end)); testlib_onfail2(isfatal); @@ -466,8 +470,10 @@ forceinline void assertStringEquals(FILIFU_ARGS size_t cw, const void *want, const void *got, const char *gotcode, bool isfatal) { ++g_testlib_ran; - if (testlib_strequals(cw, want, got)) return; - if (g_testlib_shoulddebugbreak) DebugBreak(); + if (testlib_strequals(cw, want, got)) + return; + if (g_testlib_shoulddebugbreak) + DebugBreak(); testlib_showerror(file, line, func, "assertStringEquals", "≠", gotcode, testlib_formatstr(cw, want, -1), testlib_formatstr(cw, got, -1)); @@ -478,8 +484,10 @@ forceinline void assertStringNotEquals(FILIFU_ARGS size_t cw, const void *want, const void *got, const char *gotcode, bool isfatal) { ++g_testlib_ran; - if (!testlib_strequals(cw, want, got)) return; - if (g_testlib_shoulddebugbreak) DebugBreak(); + if (!testlib_strequals(cw, want, got)) + return; + if (g_testlib_shoulddebugbreak) + DebugBreak(); testlib_showerror(file, line, func, "assertStringNotEquals", "=", gotcode, testlib_formatstr(cw, want, -1), testlib_formatstr(cw, got, -1)); @@ -490,8 +498,10 @@ forceinline void assertStrnEquals(FILIFU_ARGS size_t cw, const void *want, const void *got, size_t n, const char *gotcode, bool isfatal) { ++g_testlib_ran; - if (testlib_strnequals(cw, want, got, n)) return; - if (g_testlib_shoulddebugbreak) DebugBreak(); + if (testlib_strnequals(cw, want, got, n)) + return; + if (g_testlib_shoulddebugbreak) + DebugBreak(); testlib_showerror(file, line, func, "assertStrnEquals", "≠", gotcode, testlib_formatstr(cw, got, n), testlib_formatstr(cw, want, n)); @@ -502,8 +512,10 @@ forceinline void assertStrnNotEquals(FILIFU_ARGS size_t cw, const void *want, const void *got, size_t n, const char *gotcode, bool isfatal) { ++g_testlib_ran; - if (!testlib_strnequals(cw, want, got, n)) return; - if (g_testlib_shoulddebugbreak) DebugBreak(); + if (!testlib_strnequals(cw, want, got, n)) + return; + if (g_testlib_shoulddebugbreak) + DebugBreak(); testlib_showerror(file, line, func, "assertStrnNotEquals", "=", gotcode, testlib_formatstr(cw, got, n), testlib_formatstr(cw, want, n)); @@ -514,8 +526,10 @@ forceinline void assertStringCaseEquals(FILIFU_ARGS size_t cw, const void *want, const void *got, const char *gotcode, bool isfatal) { ++g_testlib_ran; - if (testlib_strcaseequals(cw, want, got)) return; - if (g_testlib_shoulddebugbreak) DebugBreak(); + if (testlib_strcaseequals(cw, want, got)) + return; + if (g_testlib_shoulddebugbreak) + DebugBreak(); testlib_showerror(file, line, func, "assertStringCaseEquals", "≠", gotcode, testlib_formatstr(cw, got, -1), testlib_formatstr(cw, want, -1)); @@ -526,8 +540,10 @@ forceinline void assertStringCaseNotEquals(FILIFU_ARGS size_t cw, const void *want, const void *got, const char *gotcode, bool isfatal) { ++g_testlib_ran; - if (!testlib_strcaseequals(cw, want, got)) return; - if (g_testlib_shoulddebugbreak) DebugBreak(); + if (!testlib_strcaseequals(cw, want, got)) + return; + if (g_testlib_shoulddebugbreak) + DebugBreak(); testlib_showerror(file, line, func, "assertStringCaseNotEquals", "=", gotcode, testlib_formatstr(cw, got, -1), testlib_formatstr(cw, want, -1)); @@ -538,8 +554,10 @@ forceinline void assertStrnCaseEquals(FILIFU_ARGS size_t cw, const void *want, const void *got, size_t n, const char *gotcode, bool isfatal) { ++g_testlib_ran; - if (testlib_strncaseequals(cw, want, got, n)) return; - if (g_testlib_shoulddebugbreak) DebugBreak(); + if (testlib_strncaseequals(cw, want, got, n)) + return; + if (g_testlib_shoulddebugbreak) + DebugBreak(); testlib_showerror(file, line, func, "assertStrnCaseEquals", "≠", gotcode, testlib_formatstr(cw, got, n), testlib_formatstr(cw, want, n)); @@ -551,8 +569,10 @@ forceinline void assertStrnCaseNotEquals(FILIFU_ARGS size_t cw, size_t n, const char *gotcode, bool isfatal) { ++g_testlib_ran; - if (!testlib_strncaseequals(cw, want, got, n)) return; - if (g_testlib_shoulddebugbreak) DebugBreak(); + if (!testlib_strncaseequals(cw, want, got, n)) + return; + if (g_testlib_shoulddebugbreak) + DebugBreak(); testlib_showerror(file, line, func, "assertStrnCaseNotEquals", "=", gotcode, testlib_formatstr(cw, got, n), testlib_formatstr(cw, want, n)); @@ -563,8 +583,10 @@ forceinline void assertStartsWith(FILIFU_ARGS size_t cw, const char *prefix, const char *s, const char *gotcode, bool isfatal) { ++g_testlib_ran; - if (testlib_startswith(cw, s, prefix)) return; - if (g_testlib_shoulddebugbreak) DebugBreak(); + if (testlib_startswith(cw, s, prefix)) + return; + if (g_testlib_shoulddebugbreak) + DebugBreak(); testlib_showerror(file, line, func, "assertStartsWith", "≠", gotcode, testlib_formatstr(1, prefix, -1), testlib_formatstr(1, s, -1)); @@ -575,8 +597,10 @@ forceinline void assertEndsWith(FILIFU_ARGS size_t cw, const char *suffix, const char *s, const char *gotcode, bool isfatal) { ++g_testlib_ran; - if (testlib_endswith(cw, s, suffix)) return; - if (g_testlib_shoulddebugbreak) DebugBreak(); + if (testlib_endswith(cw, s, suffix)) + return; + if (g_testlib_shoulddebugbreak) + DebugBreak(); testlib_showerror(file, line, func, "assertEndsWith", "≠", gotcode, testlib_formatstr(1, s, -1), testlib_formatstr(1, suffix, -1)); @@ -587,8 +611,10 @@ forceinline void assertContains(FILIFU_ARGS size_t cw, const char *needle, const char *s, const char *gotcode, bool isfatal) { ++g_testlib_ran; - if (testlib_contains(cw, s, needle)) return; - if (g_testlib_shoulddebugbreak) DebugBreak(); + if (testlib_contains(cw, s, needle)) + return; + if (g_testlib_shoulddebugbreak) + DebugBreak(); testlib_showerror(file, line, func, "assertContains", "∉", gotcode, testlib_formatstr(1, s, -1), testlib_formatstr(1, needle, -1)); @@ -600,8 +626,10 @@ forceinline void assertBinaryEquals_cp437(FILIFU_ARGS const char16_t *want, const char *gotcode, bool isfatal) { ++g_testlib_ran; char *v1, *v2; - if (testlib_binequals(want, got, n)) return; - if (g_testlib_shoulddebugbreak) DebugBreak(); + if (testlib_binequals(want, got, n)) + return; + if (g_testlib_shoulddebugbreak) + DebugBreak(); testlib_formatbinaryasglyphs(want, got, n, &v1, &v2); testlib_showerror(file, line, func, "assertBinaryEquals", "≠", gotcode, v1, v2); @@ -613,8 +641,10 @@ forceinline void assertBinaryEquals_hex(FILIFU_ARGS const char *want, const char *gotcode, bool isfatal) { ++g_testlib_ran; char *v1, *v2; - if (testlib_hexequals(want, got, n)) return; - if (g_testlib_shoulddebugbreak) DebugBreak(); + if (testlib_hexequals(want, got, n)) + return; + if (g_testlib_shoulddebugbreak) + DebugBreak(); testlib_formatbinaryashex(want, got, n, &v1, &v2); testlib_showerror(file, line, func, "assertBinaryEquals", "≠", gotcode, v1, v2); @@ -627,8 +657,10 @@ forceinline void assertBinaryNotEquals_cp437(FILIFU_ARGS const char16_t *want, bool isfatal) { ++g_testlib_ran; char *v1, *v2; - if (!testlib_binequals(want, got, n)) return; - if (g_testlib_shoulddebugbreak) DebugBreak(); + if (!testlib_binequals(want, got, n)) + return; + if (g_testlib_shoulddebugbreak) + DebugBreak(); testlib_formatbinaryasglyphs(want, got, n, &v1, &v2); testlib_showerror(file, line, func, "assertBinaryNotEquals", "=", gotcode, v1, v2); @@ -640,8 +672,10 @@ forceinline void assertBinaryNotEquals_hex(FILIFU_ARGS const char *want, const char *gotcode, bool isfatal) { ++g_testlib_ran; char *v1, *v2; - if (!testlib_hexequals(want, got, n)) return; - if (g_testlib_shoulddebugbreak) DebugBreak(); + if (!testlib_hexequals(want, got, n)) + return; + if (g_testlib_shoulddebugbreak) + DebugBreak(); testlib_formatbinaryashex(want, got, n, &v1, &v2); testlib_showerror(file, line, func, "assertBinaryNotEquals", "=", gotcode, v1, v2); @@ -652,8 +686,10 @@ forceinline void assertLongDoubleEquals(FILIFU_ARGS long double want, long double got, const char *gotcode, bool isfatal) { ++g_testlib_ran; - if (testlib_almostequallongdouble(want, got)) return; - if (g_testlib_shoulddebugbreak) DebugBreak(); + if (testlib_almostequallongdouble(want, got)) + return; + if (g_testlib_shoulddebugbreak) + DebugBreak(); testlib_showerror(file, line, func, "assertLongDoubleEquals", "≠", gotcode, testlib_formatfloat(want), testlib_formatfloat(got)); testlib_onfail2(isfatal); diff --git a/libc/testlib/testmain.c b/libc/testlib/testmain.c index da218f162..b343aa374 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,13 @@ 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); @@ -110,7 +118,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/BUILD.mk b/libc/thread/BUILD.mk index 7d452ce8c..5417244b8 100644 --- a/libc/thread/BUILD.mk +++ b/libc/thread/BUILD.mk @@ -34,6 +34,8 @@ LIBC_THREAD_A_DIRECTDEPS = \ LIBC_STR \ LIBC_SYSV \ LIBC_SYSV_CALLS \ + LIBC_TINYMATH \ + THIRD_PARTY_DLMALLOC \ THIRD_PARTY_NSYNC \ THIRD_PARTY_NSYNC_MEM 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..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,52 +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); - if (!mem) return 0; + // Here's the TLS memory layout on aarch64 + // + // x28 + // %tpidr_el0 + // │ + // │ _Thread_local + // ┌───┼───┬──────────┬──────────┐ + // │tib│dtv│ .tdata │ .tbss │ + // ├───┴───┴──────────┴──────────┘ + // │ + // __get_tls() + // - // poison memory between tdata and tbss - if (IsAsan()) { - __asan_poison(mem + hiz + I(_tdata_size), I(_tbss_offset) - I(_tdata_size), - kAsanProtected); - } + 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); - tib = (struct CosmoTib *)mem; - dtv = mem + sizeof(*tib); - tls = mem + hiz; + char *mem = memalign(I(_tls_align), size); + if (!mem) + return 0; - // set dtv - ((uintptr_t *)dtv)[0] = 1; - ((void **)dtv)[1] = tls; + struct CosmoTib *tib = + (struct CosmoTib *)(mem + + ROUNDUP(sizeof(struct CosmoTib), I(_tls_align)) - + sizeof(struct CosmoTib)); - // initialize .tdata + 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)) { - 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); } 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 49b579020..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,42 +46,29 @@ 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); - 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) { _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); } @@ -99,14 +85,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..a4487325c 100644 --- a/libc/thread/pthread_create.c +++ b/libc/thread/pthread_create.c @@ -60,25 +60,32 @@ __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"); + +/* #ifndef MODE_DBG */ +/* __static_yoink("threaded_dlmalloc"); */ +/* #endif */ #define MAP_ANON_OPENBSD 0x1000 #define MAP_STACK_OPENBSD 0x4000 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)); } 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); @@ -94,7 +101,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 +324,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_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..bf163980e 100644 --- a/libc/thread/pthread_exit.c +++ b/libc/thread/pthread_exit.c @@ -29,6 +29,7 @@ #include "libc/mem/mem.h" #include "libc/runtime/internal.h" #include "libc/runtime/runtime.h" +#include "libc/str/str.h" #include "libc/thread/posixthread.internal.h" #include "libc/thread/thread.h" #include "libc/thread/tls.h" @@ -44,26 +45,23 @@ void _pthread_unwind(struct PosixThread *pt) { } void _pthread_unkey(struct CosmoTib *tib) { + void *val; int i, j, gotsome; - void *val, **keys; pthread_key_dtor dtor; - if ((keys = tib->tib_keys)) { - for (j = 0; j < PTHREAD_DESTRUCTOR_ITERATIONS; ++j) { - for (gotsome = i = 0; i < PTHREAD_KEYS_MAX; ++i) { - if ((val = keys[i]) && - (dtor = atomic_load_explicit(_pthread_key_dtor + i, - memory_order_relaxed)) && - dtor != (pthread_key_dtor)-1) { - gotsome = 1; - keys[i] = 0; - dtor(val); - } - } - if (!gotsome) { - break; + for (j = 0; j < PTHREAD_DESTRUCTOR_ITERATIONS; ++j) { + for (gotsome = i = 0; i < PTHREAD_KEYS_MAX; ++i) { + if ((val = tib->tib_keys[i]) && + (dtor = atomic_load_explicit(_pthread_key_dtor + i, + memory_order_relaxed)) && + dtor != (pthread_key_dtor)-1) { + gotsome = 1; + tib->tib_keys[i] = 0; + dtor(val); } } - free(keys); + if (!gotsome) { + break; + } } } @@ -164,10 +162,13 @@ 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); } // this is a child thread longjmp(pt->pt_exiter, 1); } + +__weak_reference(pthread_exit, thr_exit); 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_getspecific.c b/libc/thread/pthread_getspecific.c index 3e432ff56..622a3888c 100644 --- a/libc/thread/pthread_getspecific.c +++ b/libc/thread/pthread_getspecific.c @@ -18,18 +18,10 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/assert.h" #include "libc/intrin/atomic.h" -#include "libc/mem/mem.h" #include "libc/thread/posixthread.internal.h" #include "libc/thread/thread.h" #include "libc/thread/tls.h" -// this is a legacy api so we avoid making the tib 1024 bytes larger -static void pthread_key_init(void) { - if (!__get_tls()->tib_keys) { - __get_tls()->tib_keys = calloc(PTHREAD_KEYS_MAX, sizeof(void *)); - } -} - /** * Sets value of TLS slot for current thread. * @@ -43,7 +35,6 @@ int pthread_setspecific(pthread_key_t k, const void *val) { // pthread_key_create() or after key has been deleted with // pthread_key_delete() is undefined." // ──Quoth POSIX.1-2017 - pthread_key_init(); unassert(0 <= k && k < PTHREAD_KEYS_MAX); unassert(atomic_load_explicit(_pthread_key_dtor + k, memory_order_acquire)); __get_tls()->tib_keys[k] = (void *)val; @@ -63,7 +54,6 @@ void *pthread_getspecific(pthread_key_t k) { // pthread_key_create() or after key has been deleted with // pthread_key_delete() is undefined." // ──Quoth POSIX.1-2017 - pthread_key_init(); unassert(0 <= k && k < PTHREAD_KEYS_MAX); unassert(atomic_load_explicit(_pthread_key_dtor + k, memory_order_acquire)); return __get_tls()->tib_keys[k]; 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_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/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_open.c b/libc/thread/sem_open.c index 3415a70c2..41ab6615f 100644 --- a/libc/thread/sem_open.c +++ b/libc/thread/sem_open.c @@ -48,7 +48,7 @@ static struct Semaphores { char *path; bool dead; int refs; - } * list; + } *list; } g_semaphores; static void sem_open_lock(void) { 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/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/calls/writevuninterruptible.c b/libc/thread/thrd_create.c similarity index 72% rename from libc/calls/writevuninterruptible.c rename to libc/thread/thrd_create.c index afded332e..01101afe1 100644 --- a/libc/calls/writevuninterruptible.c +++ b/libc/thread/thrd_create.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 2021 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,30 +16,20 @@ │ 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" +#include "libc/thread/thread.h" +#include "libc/thread/threads.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; +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/intrin/isatleastwindows10.c b/libc/thread/thrd_detach.c similarity index 88% rename from libc/intrin/isatleastwindows10.c rename to libc/thread/thrd_detach.c index 7ff304163..a604fca3e 100644 --- a/libc/intrin/isatleastwindows10.c +++ b/libc/thread/thrd_detach.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 2023 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,12 +16,11 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/nt/version.h" +#include "libc/thread/thread.h" +#include "libc/thread/threads.h" -bool32(IsAtLeastWindows10)(void) { -#ifdef __x86_64__ - return IsAtLeastWindows10(); -#else - return true; -#endif +int thrd_detach(thrd_t th) { + if (pthread_detach(th)) + return thrd_error; + return thrd_success; } diff --git a/libc/intrin/ntgetversion.c b/libc/thread/thrd_join.c similarity index 81% rename from libc/intrin/ntgetversion.c rename to libc/thread/thrd_join.c index 8afc3bddb..12a7ebdac 100644 --- a/libc/intrin/ntgetversion.c +++ b/libc/thread/thrd_join.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 2021 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,19 +16,14 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/nt/struct/teb.h" -#include "libc/runtime/runtime.h" -#ifdef __x86_64__ +#include "libc/thread/thread.h" +#include "libc/thread/threads.h" -/** - * Returns New Technology version, e.g. - * - * This can only be called on Windows. - * - * @see IsAtLeastWindows10() - */ -textwindows int NtGetVersion(void) { - return (NtGetPeb()->OSMajorVersion & 0xff) << 8 | NtGetPeb()->OSMinorVersion; +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; } - -#endif /* __x86_64__ */ diff --git a/libc/thread/thread.h b/libc/thread/thread.h index b496ce664..7d4290b5a 100644 --- a/libc/thread/thread.h +++ b/libc/thread/thread.h @@ -1,7 +1,7 @@ #ifndef COSMOPOLITAN_LIBC_THREAD_THREAD_H_ #define COSMOPOLITAN_LIBC_THREAD_THREAD_H_ -#define PTHREAD_KEYS_MAX 128 +#define PTHREAD_KEYS_MAX 48 #define PTHREAD_STACK_MIN 65536 #define PTHREAD_DESTRUCTOR_ITERATIONS 4 @@ -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/libc/thread/threads.h b/libc/thread/threads.h new file mode 100644 index 000000000..8fe01c89f --- /dev/null +++ b/libc/thread/threads.h @@ -0,0 +1,42 @@ +#ifndef COSMOPOLITAN_LIBC_THREAD_THREADS_H_ +#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 { + 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/libc/thread/tls.h b/libc/thread/tls.h index 87c0b0bc5..3957c921d 100644 --- a/libc/thread/tls.h +++ b/libc/thread/tls.h @@ -15,6 +15,7 @@ struct CosmoFtrace { /* 16 */ int64_t ft_lastaddr; /* 8 */ }; +/* cosmopolitan thread information block (512 bytes) */ /* NOTE: update aarch64 libc/errno.h if sizeof changes */ /* NOTE: update aarch64 libc/proc/vfork.S if sizeof changes */ /* NOTE: update aarch64 libc/nexgen32e/gc.S if sizeof changes */ @@ -36,9 +37,8 @@ struct CosmoTib { char *tib_sigstack_addr; uint32_t tib_sigstack_size; uint32_t tib_sigstack_flags; - void **tib_keys; void *tib_nsync; - void *tib_todo[7]; + void *tib_keys[48]; } __attribute__((__aligned__(64))); extern int __threaded; 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 63d9020ac..000000000 --- a/libc/time/strptime.c +++ /dev/null @@ -1,258 +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/tinymath/BUILD.mk b/libc/tinymath/BUILD.mk index 15493f253..cd6e5e8ed 100644 --- a/libc/tinymath/BUILD.mk +++ b/libc/tinymath/BUILD.mk @@ -63,7 +63,8 @@ $(LIBC_TINYMATH_A_OBJS): private \ -fno-associative-math \ -fno-finite-math-only \ -fno-cx-limited-range \ - -ffp-int-builtin-inexact + -ffp-int-builtin-inexact \ + -fno-sanitize=address LIBC_TINYMATH_LIBS = $(foreach x,$(LIBC_TINYMATH_ARTIFACTS),$($(x))) LIBC_TINYMATH_HDRS = $(foreach x,$(LIBC_TINYMATH_ARTIFACTS),$($(x)_HDRS)) 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/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; } 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/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; 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; 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/vga/BUILD.mk b/libc/vga/BUILD.mk index 55c801065..93f83b431 100644 --- a/libc/vga/BUILD.mk +++ b/libc/vga/BUILD.mk @@ -45,6 +45,8 @@ $(LIBC_VGA_A).pkg: \ $(LIBC_VGA_A_OBJS) \ $(foreach x,$(LIBC_VGA_A_DIRECTDEPS),$($(x)_A).pkg) +$(LIBC_VGA_A_OBJS): private COPTS += -fno-sanitize=address + LIBC_VGA_LIBS = $(foreach x,$(LIBC_VGA_ARTIFACTS),$($(x))) LIBC_VGA_SRCS = $(foreach x,$(LIBC_VGA_ARTIFACTS),$($(x)_SRCS)) LIBC_VGA_HDRS = $(foreach x,$(LIBC_VGA_ARTIFACTS),$($(x)_HDRS)) 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/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); +} 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/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/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/finger/BUILD.mk b/net/finger/BUILD.mk index fce253094..09b8c141f 100644 --- a/net/finger/BUILD.mk +++ b/net/finger/BUILD.mk @@ -22,6 +22,7 @@ NET_FINGER_A_CHECKS = \ NET_FINGER_A_DIRECTDEPS = \ LIBC_INTRIN \ + LIBC_MEM \ LIBC_NEXGEN32E NET_FINGER_A_DEPS := \ 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/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/escape.h b/net/http/escape.h index 653121093..139ef21c0 100644 --- a/net/http/escape.h +++ b/net/http/escape.h @@ -14,29 +14,32 @@ extern const char kEscapeSegment[256]; extern const char kEscapeParam[256]; extern const char kEscapeFragment[256]; -char *EscapeHtml(const char *, size_t, size_t *); -char *EscapeUrl(const char *, size_t, size_t *, const char[256]); -char *EscapeUser(const char *, size_t, size_t *); -char *EscapePass(const char *, size_t, size_t *); -char *EscapeIp(const char *, size_t, size_t *); -char *EscapeHost(const char *, size_t, size_t *); -char *EscapePath(const char *, size_t, size_t *); -char *EscapeParam(const char *, size_t, size_t *); -char *EscapeFragment(const char *, size_t, size_t *); -char *EscapeSegment(const char *, size_t, size_t *); -char *EscapeJsStringLiteral(char **, size_t *, const char *, size_t, size_t *); +char *EscapeHtml(const char *, size_t, size_t *) libcesque; +char *EscapeUrl(const char *, size_t, size_t *, const char[256]) libcesque; +char *EscapeUser(const char *, size_t, size_t *) libcesque; +char *EscapePass(const char *, size_t, size_t *) libcesque; +char *EscapeIp(const char *, size_t, size_t *) libcesque; +char *EscapeHost(const char *, size_t, size_t *) libcesque; +char *EscapePath(const char *, size_t, size_t *) libcesque; +char *EscapeParam(const char *, size_t, size_t *) libcesque; +char *EscapeFragment(const char *, size_t, size_t *) libcesque; +char *EscapeSegment(const char *, size_t, size_t *) libcesque; +char *EscapeJsStringLiteral(char **, size_t *, const char *, size_t, + size_t *) libcesque; -ssize_t HasControlCodes(const char *, size_t, int); -char *Underlong(const char *, size_t, size_t *); -char *DecodeLatin1(const char *, size_t, size_t *); -char *EncodeLatin1(const char *, size_t, size_t *, int); -char *EncodeHttpHeaderValue(const char *, size_t, size_t *); -char *VisualizeControlCodes(const char *, size_t, size_t *); -char *IndentLines(const char *, size_t, size_t *, size_t); -char *EncodeBase32(const char *, size_t, const char *, size_t, size_t *); -char *DecodeBase32(const char *, size_t, const char *, size_t, size_t *); -char *EncodeBase64(const char *, size_t, size_t *); -char *DecodeBase64(const char *, size_t, size_t *); +ssize_t HasControlCodes(const char *, size_t, int) libcesque; +char *Underlong(const char *, size_t, size_t *) libcesque; +char *DecodeLatin1(const char *, size_t, size_t *) libcesque; +char *EncodeLatin1(const char *, size_t, size_t *, int) libcesque; +char *EncodeHttpHeaderValue(const char *, size_t, size_t *) libcesque; +char *VisualizeControlCodes(const char *, size_t, size_t *) libcesque; +char *IndentLines(const char *, size_t, size_t *, size_t) libcesque; +char *EncodeBase32(const char *, size_t, const char *, size_t, + size_t *) libcesque; +char *DecodeBase32(const char *, size_t, const char *, size_t, + size_t *) libcesque; +char *EncodeBase64(const char *, size_t, size_t *) libcesque; +char *DecodeBase64(const char *, size_t, size_t *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_NET_HTTP_ESCAPE_H_ */ 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..5ad6a3a81 100644 --- a/net/http/findcontenttype.c +++ b/net/http/findcontenttype.c @@ -17,9 +17,9 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/assert.h" -#include "libc/serialize.h" #include "libc/intrin/bswap.h" #include "libc/macros.internal.h" +#include "libc/serialize.h" #include "libc/str/str.h" #include "libc/str/tab.internal.h" #include "net/http/http.h" @@ -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/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/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/http.h b/net/http/http.h index a673a4c3a..c1dbbb13b 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 @@ -180,30 +180,33 @@ struct HttpUnchunker { extern const char kHttpToken[256]; extern const bool kHttpRepeatable[kHttpHeadersMax]; -const char *GetHttpReason(int); -const char *GetHttpHeaderName(int); -int GetHttpHeader(const char *, size_t); -void InitHttpMessage(struct HttpMessage *, int); -void DestroyHttpMessage(struct HttpMessage *); -int ParseHttpMessage(struct HttpMessage *, const char *, size_t); -bool HeaderHas(struct HttpMessage *, const char *, int, const char *, size_t); -int64_t ParseContentLength(const char *, size_t); -char *FormatHttpDateTime(char[hasatleast 30], struct tm *); -bool ParseHttpRange(const char *, size_t, long, long *, long *); -int64_t ParseHttpDateTime(const char *, size_t); -uint64_t ParseHttpMethod(const char *, size_t); -bool IsValidHttpToken(const char *, size_t); -bool IsValidCookieValue(const char *, size_t); -bool IsAcceptablePath(const char *, size_t); -bool IsAcceptableHost(const char *, size_t); -bool IsAcceptablePort(const char *, size_t); -bool IsReasonablePath(const char *, size_t); -int ParseForwarded(const char *, size_t, uint32_t *, uint16_t *); -bool IsMimeType(const char *, size_t, const char *); -ssize_t Unchunk(struct HttpUnchunker *, char *, size_t, size_t *); -const char *FindContentType(const char *, size_t); -bool IsNoCompressExt(const char *, size_t); -char *FoldHeader(struct HttpMessage *, const char *, int, size_t *); +const char *GetHttpReason(int) libcesque; +const char *GetHttpHeaderName(int) libcesque; +int GetHttpHeader(const char *, size_t) libcesque; +void InitHttpMessage(struct HttpMessage *, int) libcesque; +void DestroyHttpMessage(struct HttpMessage *) libcesque; +void ResetHttpMessage(struct HttpMessage *, int) libcesque; +int ParseHttpMessage(struct HttpMessage *, const char *, size_t, + size_t) libcesque; +bool HeaderHas(struct HttpMessage *, const char *, int, const char *, + size_t) libcesque; +int64_t ParseContentLength(const char *, size_t) libcesque; +char *FormatHttpDateTime(char[hasatleast 30], struct tm *) libcesque; +bool ParseHttpRange(const char *, size_t, long, long *, long *) libcesque; +int64_t ParseHttpDateTime(const char *, size_t) libcesque; +uint64_t ParseHttpMethod(const char *, size_t) libcesque; +bool IsValidHttpToken(const char *, size_t) libcesque; +bool IsValidCookieValue(const char *, size_t) libcesque; +bool IsAcceptablePath(const char *, size_t) libcesque; +bool IsAcceptableHost(const char *, size_t) libcesque; +bool IsAcceptablePort(const char *, size_t) libcesque; +bool IsReasonablePath(const char *, size_t) libcesque; +int ParseForwarded(const char *, size_t, uint32_t *, uint16_t *) libcesque; +bool IsMimeType(const char *, size_t, const char *) libcesque; +ssize_t Unchunk(struct HttpUnchunker *, char *, size_t, size_t *) libcesque; +const char *FindContentType(const char *, size_t) libcesque; +bool IsNoCompressExt(const char *, size_t) libcesque; +char *FoldHeader(struct HttpMessage *, const char *, int, size_t *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_HTTP_HTTP_H_ */ 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/ip.h b/net/http/ip.h index 89b665aca..d81845d3f 100644 --- a/net/http/ip.h +++ b/net/http/ip.h @@ -29,23 +29,23 @@ struct Cidr { int cidr; }; -int64_t ParseIp(const char *, size_t); -struct Cidr ParseCidr(const char *, size_t); -bool IsDodIp(uint32_t); -bool IsArinIp(uint32_t); -bool IsRipeIp(uint32_t); -bool IsApnicIp(uint32_t); -bool IsLacnicIp(uint32_t); -bool IsPublicIp(uint32_t); -bool IsPrivateIp(uint32_t); -bool IsAfrinicIp(uint32_t); -bool IsTestnetIp(uint32_t); -bool IsLoopbackIp(uint32_t); -bool IsMulticastIp(uint32_t); -bool IsAnonymousIp(uint32_t); -int CategorizeIp(uint32_t); -const char *GetIpCategoryName(int); -bool IsCloudflareIp(uint32_t); +int64_t ParseIp(const char *, size_t) libcesque; +struct Cidr ParseCidr(const char *, size_t) libcesque; +bool IsDodIp(uint32_t) libcesque; +bool IsArinIp(uint32_t) libcesque; +bool IsRipeIp(uint32_t) libcesque; +bool IsApnicIp(uint32_t) libcesque; +bool IsLacnicIp(uint32_t) libcesque; +bool IsPublicIp(uint32_t) libcesque; +bool IsPrivateIp(uint32_t) libcesque; +bool IsAfrinicIp(uint32_t) libcesque; +bool IsTestnetIp(uint32_t) libcesque; +bool IsLoopbackIp(uint32_t) libcesque; +bool IsMulticastIp(uint32_t) libcesque; +bool IsAnonymousIp(uint32_t) libcesque; +int CategorizeIp(uint32_t) libcesque; +const char *GetIpCategoryName(int) libcesque; +bool IsCloudflareIp(uint32_t) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_NET_HTTP_IP_H_ */ 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..10b6b7e72 100644 --- a/net/http/isnocompressext.c +++ b/net/http/isnocompressext.c @@ -16,9 +16,9 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/serialize.h" #include "libc/intrin/bswap.h" #include "libc/macros.internal.h" +#include "libc/serialize.h" #include "libc/str/str.h" #include "libc/str/tab.internal.h" #include "net/http/http.h" @@ -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..3755e63ff 100644 --- a/net/http/parsecontentlength.c +++ b/net/http/parsecontentlength.c @@ -16,11 +16,10 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/stdckdint.h" #include "libc/str/str.h" #include "net/http/http.h" -#define MAXIMUM (1024L * 1024L * 1024L * 1024L) - /** * Parses Content-Length header. * @@ -30,14 +29,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 > 0x000000ffffffffff) + 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..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) { @@ -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..91ef243b7 100644 --- a/net/http/parsehttpmessage.c +++ b/net/http/parsehttpmessage.c @@ -18,7 +18,6 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/assert.h" #include "libc/limits.h" -#include "libc/macros.internal.h" #include "libc/mem/alg.h" #include "libc/mem/arraylist.internal.h" #include "libc/mem/mem.h" @@ -30,8 +29,6 @@ #include "libc/x/x.h" #include "net/http/http.h" -#define LIMIT (SHRT_MAX - 2) - /** * Initializes HTTP message parser. */ @@ -52,6 +49,24 @@ void DestroyHttpMessage(struct HttpMessage *r) { } } +/** + * Resets http message parser state, so it can be re-used. + * + * This function amortizes the cost of malloc() in threads that process + * multiple messages in a loop. + * + * @param r is assumed to have been passed to `InitHttpMessage` earlier + */ +void ResetHttpMessage(struct HttpMessage *r, int type) { + unassert(type == kHttpRequest || type == kHttpResponse); + unsigned c = r->xheaders.c; + struct HttpHeader *p = r->xheaders.p; + bzero(r, sizeof(*r)); + r->xheaders.c = c; + r->xheaders.p = p; + r->type = type; +} + /** * Parses HTTP request or response. * @@ -81,21 +96,31 @@ void DestroyHttpMessage(struct HttpMessage *r) { * HTTP request under MODE=rel on a Core i9 which is about three cycles * per byte or a gigabyte per second of throughput per core. * - * @note we assume p points to a buffer that has >=SHRT_MAX bytes + * @param p needs to have at least `c` bytes available + * @param n is how many bytes have been received off the network so far + * @param c is the capacity of `p` buffer; beyond `SHRT_MAX` is ignored + * @return bytes on success, -1 on failure, 0 if more data must be read + * @note messages can't exceed 2**15 bytes * @see HTTP/1.1 RFC2616 RFC2068 * @see HTTP/1.0 RFC1945 */ -int ParseHttpMessage(struct HttpMessage *r, const char *p, size_t n) { - int c, h, i; - for (n = MIN(n, LIMIT); r->i < n; ++r->i) { - c = p[r->i] & 0xff; +int ParseHttpMessage(struct HttpMessage *r, const char *p, size_t n, size_t c) { + int h, i, ch; + if (n > c) + return einval(); + n = n > SHRT_MAX ? SHRT_MAX : n; + c = c > SHRT_MAX ? SHRT_MAX : c; + for (; r->i < n; ++r->i) { + ch = p[r->i] & 255; switch (r->t) { case kHttpStateStart: - if (c == '\r' || c == '\n') break; // RFC7230 § 3.5 - if (!kHttpToken[c]) return ebadmsg(); + if (ch == '\r' || ch == '\n') + break; // RFC7230 § 3.5 + if (!kHttpToken[ch]) + return ebadmsg(); if (r->type == kHttpRequest) { r->t = kHttpStateMethod; - r->method = kToUpper[c]; + r->method = kToUpper[ch]; r->a = 8; } else { r->t = kHttpStateVersion; @@ -104,49 +129,52 @@ int ParseHttpMessage(struct HttpMessage *r, const char *p, size_t n) { break; case kHttpStateMethod: for (;;) { - if (c == ' ') { + if (ch == ' ') { r->a = r->i + 1; r->t = kHttpStateUri; break; - } else if (r->a == 64 || !kHttpToken[c]) { + } else if (r->a == 64 || !kHttpToken[ch]) { return ebadmsg(); } - c = kToUpper[c]; - r->method |= (uint64_t)c << r->a; + ch = kToUpper[ch]; + r->method |= (uint64_t)ch << r->a; r->a += 8; - if (++r->i == n) break; - c = p[r->i] & 0xff; + if (++r->i == n) + break; + ch = p[r->i] & 255; } break; case kHttpStateUri: for (;;) { - if (c == ' ' || c == '\r' || c == '\n') { - if (r->i == r->a) return ebadmsg(); + if (ch == ' ' || ch == '\r' || ch == '\n') { + if (r->i == r->a) + return ebadmsg(); r->uri.a = r->a; r->uri.b = r->i; - if (c == ' ') { + if (ch == ' ') { r->a = r->i + 1; r->t = kHttpStateVersion; } else { r->version = 9; - r->t = c == '\r' ? kHttpStateCr : kHttpStateLf1; + r->t = ch == '\r' ? kHttpStateCr : kHttpStateLf1; } break; - } else if (c < 0x20 || (0x7F <= c && c < 0xA0)) { + } else if (ch < 0x20 || (0x7F <= ch && ch < 0xA0)) { return ebadmsg(); } - if (++r->i == n) break; - c = p[r->i] & 0xff; + if (++r->i == n) + break; + ch = p[r->i] & 255; } break; case kHttpStateVersion: - if (c == ' ' || c == '\r' || c == '\n') { + if (ch == ' ' || ch == '\r' || ch == '\n') { if (r->i - r->a == 8 && (READ64BE(p + r->a) & 0xFFFFFFFFFF00FF00) == 0x485454502F002E00 && isdigit(p[r->a + 5]) && isdigit(p[r->a + 7])) { r->version = (p[r->a + 5] - '0') * 10 + (p[r->a + 7] - '0'); if (r->type == kHttpRequest) { - r->t = c == '\r' ? kHttpStateCr : kHttpStateLf1; + r->t = ch == '\r' ? kHttpStateCr : kHttpStateLf1; } else { r->t = kHttpStateStatus; } @@ -157,51 +185,56 @@ int ParseHttpMessage(struct HttpMessage *r, const char *p, size_t n) { break; case kHttpStateStatus: for (;;) { - if (c == ' ' || c == '\r' || c == '\n') { - if (r->status < 100) return ebadmsg(); - if (c == ' ') { + if (ch == ' ' || ch == '\r' || ch == '\n') { + if (r->status < 100) + return ebadmsg(); + if (ch == ' ') { r->a = r->i + 1; r->t = kHttpStateMessage; } else { - r->t = c == '\r' ? kHttpStateCr : kHttpStateLf1; + r->t = ch == '\r' ? kHttpStateCr : kHttpStateLf1; } break; - } else if ('0' <= c && c <= '9') { + } else if ('0' <= ch && ch <= '9') { r->status *= 10; - r->status += c - '0'; - if (r->status > 999) return ebadmsg(); + r->status += ch - '0'; + if (r->status > 999) + return ebadmsg(); } else { return ebadmsg(); } - if (++r->i == n) break; - c = p[r->i] & 0xff; + if (++r->i == n) + break; + ch = p[r->i] & 255; } break; case kHttpStateMessage: for (;;) { - if (c == '\r' || c == '\n') { + if (ch == '\r' || ch == '\n') { r->message.a = r->a; r->message.b = r->i; - r->t = c == '\r' ? kHttpStateCr : kHttpStateLf1; + r->t = ch == '\r' ? kHttpStateCr : kHttpStateLf1; break; - } else if (c < 0x20 || (0x7F <= c && c < 0xA0)) { + } else if (ch < 0x20 || (0x7F <= ch && ch < 0xA0)) { return ebadmsg(); } - if (++r->i == n) break; - c = p[r->i] & 0xff; + if (++r->i == n) + break; + ch = p[r->i] & 255; } break; case kHttpStateCr: - if (c != '\n') return ebadmsg(); + if (ch != '\n') + return ebadmsg(); r->t = kHttpStateLf1; break; case kHttpStateLf1: - if (c == '\r') { + if (ch == '\r') { r->t = kHttpStateLf2; break; - } else if (c == '\n') { + } else if (ch == '\n') { return ++r->i; - } else if (!kHttpToken[c]) { + } else if (!kHttpToken[ch]) { // 1. Forbid empty header name (RFC2616 §2.2) // 2. Forbid line folding (RFC7230 §3.2.4) return ebadmsg(); @@ -211,27 +244,30 @@ int ParseHttpMessage(struct HttpMessage *r, const char *p, size_t n) { break; case kHttpStateName: for (;;) { - if (c == ':') { + if (ch == ':') { r->k.b = r->i; r->t = kHttpStateColon; break; - } else if (!kHttpToken[c]) { + } else if (!kHttpToken[ch]) { return ebadmsg(); } - if (++r->i == n) break; - c = p[r->i] & 0xff; + if (++r->i == n) + break; + ch = p[r->i] & 255; } break; case kHttpStateColon: - if (c == ' ' || c == '\t') break; + if (ch == ' ' || ch == '\t') + break; r->a = r->i; r->t = kHttpStateValue; // fallthrough case kHttpStateValue: for (;;) { - if (c == '\r' || c == '\n') { + if (ch == '\r' || ch == '\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; @@ -260,17 +296,18 @@ int ParseHttpMessage(struct HttpMessage *r, const char *p, size_t n) { ++r->xheaders.n; } } - r->t = c == '\r' ? kHttpStateCr : kHttpStateLf1; + r->t = ch == '\r' ? kHttpStateCr : kHttpStateLf1; break; - } else if ((c < 0x20 && c != '\t') || (0x7F <= c && c < 0xA0)) { + } else if ((ch < 0x20 && ch != '\t') || (0x7F <= ch && ch < 0xA0)) { return ebadmsg(); } - if (++r->i == n) break; - c = p[r->i] & 0xff; + if (++r->i == n) + break; + ch = p[r->i] & 255; } break; case kHttpStateLf2: - if (c == '\n') { + if (ch == '\n') { return ++r->i; } return ebadmsg(); @@ -278,9 +315,7 @@ int ParseHttpMessage(struct HttpMessage *r, const char *p, size_t n) { __builtin_unreachable(); } } - if (r->i < LIMIT) { + if (r->i < c) return 0; - } else { - return ebadmsg(); - } + return ebadmsg(); } 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/tokenbucket.h b/net/http/tokenbucket.h index a9e74a321..a4fd64ed9 100644 --- a/net/http/tokenbucket.h +++ b/net/http/tokenbucket.h @@ -3,9 +3,9 @@ #include "libc/atomic.h" COSMOPOLITAN_C_START_ -void ReplenishTokens(atomic_uint_fast64_t *, size_t); -int AcquireToken(atomic_schar *, uint32_t, int); -int CountTokens(atomic_schar *, uint32_t, int); +void ReplenishTokens(atomic_uint_fast64_t *, size_t) libcesque; +int AcquireToken(atomic_schar *, uint32_t, int) libcesque; +int CountTokens(atomic_schar *, uint32_t, int) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_NET_HTTP_TOKENBUCKET_H_ */ 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/url.h b/net/http/url.h index 7284daf36..1ebb36981 100644 --- a/net/http/url.h +++ b/net/http/url.h @@ -17,7 +17,7 @@ struct UrlParams { struct UrlParam { struct UrlView key; struct UrlView val; - } * p; + } *p; }; struct Url { @@ -31,11 +31,11 @@ struct Url { struct UrlView fragment; }; -char *EncodeUrl(struct Url *, size_t *); -char *ParseUrl(const char *, size_t, struct Url *, int); -char *ParseParams(const char *, size_t, struct UrlParams *); -char *ParseHost(const char *, size_t, struct Url *); -char *EscapeUrlView(char *, struct UrlView *, const char[256]); +char *EncodeUrl(struct Url *, size_t *) libcesque; +char *ParseUrl(const char *, size_t, struct Url *, int) libcesque; +char *ParseParams(const char *, size_t, struct UrlParams *) libcesque; +char *ParseHost(const char *, size_t, struct Url *) libcesque; +char *EscapeUrlView(char *, struct UrlView *, const char[256]) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_NET_HTTP_URL_H_ */ 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/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/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/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/blackhole.c b/net/turfwar/blackhole.c index 0c4b925e9..a1c75025f 100644 --- a/net/turfwar/blackhole.c +++ b/net/turfwar/blackhole.c @@ -18,9 +18,9 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/calls/calls.h" #include "libc/errno.h" -#include "libc/serialize.h" #include "libc/intrin/kprintf.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" diff --git a/net/turfwar/blackholed.c b/net/turfwar/blackholed.c index 776267a02..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" @@ -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..fd76dcfa8 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" @@ -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; } @@ -861,7 +879,7 @@ void *HttpWorker(void *arg) { // parse http message // we're only doing one-shot parsing right now - if ((inmsglen = ParseHttpMessage(msg, inbuf, got)) <= 0) { + if ((inmsglen = ParseHttpMessage(msg, inbuf, got, INBUF_SIZE)) <= 0) { ++g_parsefails; break; } @@ -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( @@ -1789,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; @@ -1939,9 +1966,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/BUILD.mk b/test/BUILD.mk index 63d89de46..b5d7a55d5 100644 --- a/test/BUILD.mk +++ b/test/BUILD.mk @@ -2,7 +2,8 @@ #── vi: set noet ft=make ts=8 sw=8 fenc=utf-8 :vi ────────────────────┘ .PHONY: o/$(MODE)/test -o/$(MODE)/test: o/$(MODE)/test/dsp \ +o/$(MODE)/test: o/$(MODE)/test/ctl \ + o/$(MODE)/test/dsp \ o/$(MODE)/test/libc \ o/$(MODE)/test/libcxx \ o/$(MODE)/test/math \ diff --git a/test/ctl/.clang-format b/test/ctl/.clang-format new file mode 100644 index 000000000..9daf0a9e9 --- /dev/null +++ b/test/ctl/.clang-format @@ -0,0 +1,12 @@ +--- +BasedOnStyle: Mozilla +IndentWidth: 4 +ColumnLimit: 80 +--- +Language: Cpp +AllowShortFunctionsOnASingleLine: false +AlignTrailingComments: false +AlignEscapedNewlines: DontAlign +AlwaysBreakTemplateDeclarations: true +ConstructorInitializerAllOnOneLineOrOnePerLine: true +--- diff --git a/test/ctl/BUILD.mk b/test/ctl/BUILD.mk new file mode 100644 index 000000000..9b2b59c13 --- /dev/null +++ b/test/ctl/BUILD.mk @@ -0,0 +1,39 @@ +#-*-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 += TEST_CTL + +TEST_CTL_FILES := $(wildcard test/ctl/*) +TEST_CTL_SRCS = $(filter %.cc,$(TEST_CTL_FILES)) +TEST_CTL_OBJS = $(TEST_CTL_SRCS:%.cc=o/$(MODE)/%.o) +TEST_CTL_COMS = $(TEST_CTL_OBJS:%.o=%) +TEST_CTL_BINS = $(TEST_CTL_COMS) $(TEST_CTL_COMS:%=%.dbg) +TEST_CTL_CHECKS = $(TEST_CTL_COMS:%=%.runs) +TEST_CTL_TESTS = $(TEST_CTL_COMS:%=%.ok) + +TEST_CTL_DIRECTDEPS = \ + CTL \ + LIBC_INTRIN \ + LIBC_LOG \ + LIBC_MEM \ + THIRD_PARTY_LIBCXX \ + +TEST_CTL_DEPS := \ + $(call uniq,$(foreach x,$(TEST_CTL_DIRECTDEPS),$($(x)))) + +o/$(MODE)/test/ctl/ctl.pkg: \ + $(TEST_CTL_OBJS) \ + $(foreach x,$(TEST_CTL_DIRECTDEPS),$($(x)_A).pkg) + +o/$(MODE)/test/ctl/%.dbg: \ + $(TEST_CTL_DEPS) \ + o/$(MODE)/test/ctl/%.o \ + o/$(MODE)/test/ctl/ctl.pkg \ + $(CRT) \ + $(APE_NO_MODIFY_SELF) + @$(APELINK) + +.PHONY: o/$(MODE)/test/ctl +o/$(MODE)/test/ctl: \ + $(TEST_CTL_BINS) \ + $(TEST_CTL_CHECKS) diff --git a/test/ctl/optional_test.cc b/test/ctl/optional_test.cc new file mode 100644 index 000000000..c00f30d5b --- /dev/null +++ b/test/ctl/optional_test.cc @@ -0,0 +1,128 @@ +// -*- mode:c++; indent-tabs-mode:nil; c-basic-offset:4; coding:utf-8 -*- +// vi: set et ft=cpp ts=4 sts=4 sw=4 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 "ctl/optional.h" + +#include "ctl/string.h" + +#include "libc/runtime/runtime.h" + +// #include +// #include +// #define ctl std + +static int g = 0; + +int +main() +{ + + { + ctl::optional x; + if (x) + return 1; + if (x.has_value()) + return 2; + } + + { + ctl::optional x(42); + if (!x) + return 3; + if (!x.has_value()) + return 4; + if (x.value() != 42) + return 5; + } + + { + ctl::optional x("hello"); + ctl::optional y(x); + if (!y) + return 6; + if (!y.has_value()) + return 7; + if (y.value() != "hello") + return 8; + } + + { + ctl::optional x("world"); + ctl::optional y(std::move(x)); + if (!y) + return 9; + if (!y.has_value()) + return 10; + if (y.value() != "world") + return 11; + } + + { + ctl::optional x(42); + ctl::optional y; + y = x; + if (!y) + return 13; + if (!y.has_value()) + return 14; + if (y.value() != 42) + return 15; + } + + { + ctl::optional x("hello"); + ctl::optional y; + y = std::move(x); + if (!y) + return 16; + if (!y.has_value()) + return 17; + if (y.value() != "hello") + return 18; + } + + { + ctl::optional x(42); + x.reset(); + if (x) + return 20; + if (x.has_value()) + return 21; + } + + { + ctl::optional x; + x.emplace("hello"); + if (!x) + return 22; + if (!x.has_value()) + return 23; + if (x.value() != "hello") + return 24; + } + + { + struct A { int* p = &g; A() {++*p; } }; + ctl::optional x; + if (g != 0) + return 25; + } + + CheckForMemoryLeaks(); + return 0; +} diff --git a/test/ctl/string_test.cc b/test/ctl/string_test.cc new file mode 100644 index 000000000..e43f673a0 --- /dev/null +++ b/test/ctl/string_test.cc @@ -0,0 +1,386 @@ +// -*- mode:c++; indent-tabs-mode:nil; c-basic-offset:4; coding:utf-8 -*- +// vi: set et ft=cpp ts=4 sts=4 sw=4 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 "ctl/string.h" + +#include <__type_traits/is_same.h> +#include <__utility/move.h> + +#include "libc/runtime/runtime.h" +#include "libc/str/str.h" + +using String = ctl::string; +// #include +// using String = std::string; + +int +main() +{ + + { + String s; + s += 'h'; + s += 'i'; + if (s != "hi") + return 1; + } + + { + String s; + if (!s.empty()) + return 6; + s.reserve(32); + if (!s.empty()) + return 7; + if (!s.starts_with("")) + return 8; + if (s.starts_with("a")) + return 9; + s += "abc"; + if (!s.starts_with("a")) + return 10; + } + + { + String s; + s += "hello world how are you"; + s.reserve(3); + if (s != "hello world how are you") + return 11; + } + + { + String s(4, 'x'); + if (s != "xxxx") + return 12; + s.resize(3); + if (s != "xxx") + return 13; + s.resize(4, 'y'); + if (s != "xxxy") + return 14; + } + + { + String a = "a"; + String b = "a"; + if (a.compare(b) != 0) + return 17; + } + + { + String a = "a"; + String b = "b"; + if (a.compare(b) >= 0) + return 18; + } + + { + String a = "a"; + String b = "ab"; + if (a.compare(b) >= 0) + return 19; + } + + { + String a = "ab"; + String b = "a"; + if (a.compare(b) <= 0) + return 20; + } + + { + String a = ""; + String b = ""; + if (a.compare(b) != 0) + return 21; + } + + { + String a = "fooBARbaz"; + if (a.substr(3, 3) != "BAR") + return 22; + if (a.replace(3, 3, "MOO") != "fooMOObaz") + return 23; + } + + { + String a = "fooBAR"; + if (a.substr(3, 3) != "BAR") + return 24; + if (a.replace(3, 3, "MOO") != "fooMOO") + return 25; + } + + { + String a = "fooBAR"; + if (a.substr(1, 0) != "") + return 26; + if (a.replace(1, 0, "MOO") != "fMOOooBAR") + return 27; + if (!a.starts_with("fMOOooBAR")) + return 28; + if (!a.ends_with("")) + return 29; + if (!a.ends_with("BAR")) + return 30; + if (a.ends_with("bar")) + return 31; + } + + { + String s1 = "hello"; + String s2 = "world"; + String s3 = s1 + " " + s2; + if (s3 != "hello world") + return 32; + } + + { + String s = "hello"; + if (s.size() != 5) + return 33; + if (s.length() != 5) + return 34; + if (s.capacity() < 5) + return 35; + } + + { + String s = "hello"; + if (s[0] != 'h' || s[1] != 'e' || s[2] != 'l' || s[3] != 'l' || + s[4] != 'o') + return 36; + s[0] = 'H'; + if (s != "Hello") + return 37; + } + + { + String s = "hello"; + if (s.find('e') != 1) + return 38; + if (s.find('l') != 2) + return 39; + if (s.find('x') != s.npos) + return 40; + } + + { + String s = "hello"; + if (!s.ends_with("lo")) + return 41; + if (s.ends_with("el")) + return 42; + } + + { + String s = "hello"; + String sub = s.substr(1, 3); + if (sub != "ell") + return 43; + sub = s.substr(2); + if (sub != "llo") + return 44; + } + + { + String s = "hello"; + String s2 = s; + if (s != s2) + return 45; + s2[0] = 'H'; + if (s == s2) + return 46; + } + + { + String s = "hello"; + String s2 = std::move(s); + if (s2 != "hello") + return 47; + if (!s.empty()) + return 48; + } + + { + String s = "hello"; + const char* cstr = s.c_str(); + if (strcmp(cstr, "hello") != 0) + return 49; + } + + // { + // String s = "hello"; + // char buffer[10]; + // s.copy(buffer, sizeof(buffer)); + // if (strcmp(buffer, "hello") != 0) + // return 50; + // } + + { + String s = "hello"; + s.resize(3); + if (s != "hel") + return 51; + s.resize(10, 'x'); + if (s != "helxxxxxxx") + return 52; + } + + { + String s = "hello"; + s.clear(); + if (!s.empty()) + return 53; + } + + { + String s = "hello"; + auto it = s.begin(); + if (*it != 'h') + return 54; + ++it; + if (*it != 'e') + return 55; + } + + { + String s = "hello"; + String s2 = "world"; + s.swap(s2); + if (s != "world" || s2 != "hello") + return 56; + } + + { + String s = "hello"; + if (s.front() != 'h' || s.back() != 'o') + return 57; + } + + { + String s = "hello"; + s.push_back('!'); + if (s != "hello!") + return 58; + s.pop_back(); + if (s != "hello") + return 59; + } + + { + String s = "hello"; + s.insert(2, "XYZ"); + if (s != "heXYZllo") + return 60; + } + + { + String s = "hello"; + s.erase(1, 2); + if (s != "hlo") + return 61; + } + + { + String s = "hello"; + s.replace(1, 2, "XYZ"); + if (s != "hXYZlo") + return 62; + } + + { + String s = "hello"; + s.append(" world"); + if (s != "hello world") + return 63; + for (int i = 0; i < 10; ++i) { + s.append(" world"); + } + if (s != "hello world world world world world world world world world " + "world world") { + return 64; + } + } + + // { + // String s = "hello"; + // s.assign("world"); + // if (s != "world") + // return 64; + // } + + { + String s = "hello"; + if (s.compare("world") >= 0) + return 65; + if (s.compare("hello") != 0) + return 66; + if (s.compare("hallo") <= 0) + return 67; + } + + { + String s = "hello"; + if (s == "world") + return 68; + if (s != "hello") + return 69; + if (s < "hallo") + return 70; + if (s > "world") + return 71; + } + + { + if ("hello"s != "hello") + return 77; + if ("hell"s + "o" != "hello") + return 78; + } + + { + String s; + if constexpr (std::is_same_v) { + // tests the small-string optimization on ctl::string + char* d = s.data(); + for (int i = 0; i < 23; ++i) { + s.append("a"); + if (s.data() != d) { + return 79 + i; + } + } + s.append("a"); + if (s.data() == d) { + return 103; + } + } else { + // just check that append in a loop works + for (int i = 0; i < 24; ++i) { + s.append("a"); + } + } + if (s != "aaaaaaaaaaaaaaaaaaaaaaaa") { + return 104; + } + } + + CheckForMemoryLeaks(); + return 0; +} diff --git a/test/ctl/string_view_test.cc b/test/ctl/string_view_test.cc new file mode 100644 index 000000000..fb43d5898 --- /dev/null +++ b/test/ctl/string_view_test.cc @@ -0,0 +1,180 @@ +// -*- mode:c++; indent-tabs-mode:nil; c-basic-offset:4; coding:utf-8 -*- +// vi: set et ft=cpp ts=4 sts=4 sw=4 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 "ctl/string_view.h" + +#include <__utility/move.h> + +#include "libc/runtime/runtime.h" +#include "libc/str/str.h" + +// #include +// #define ctl std + +int +main(int argc, char* argv[]) +{ + + { + ctl::string_view s = "hello there"; + s.remove_prefix(6); + if (s != "there") + return 1; + s.remove_suffix(1); + if (s != "ther") + return 2; + } + + { + ctl::string_view s = "hello"; + if (s.front() != 'h' || s.back() != 'o') + return 3; + } + + { + ctl::string_view s = "hello"; + if (s.compare("world") >= 0) + return 4; + if (s.compare("hello") != 0) + return 5; + if (s.compare("hallo") <= 0) + return 6; + } + + { + ctl::string_view s = "hello"; + if (s.find('e') != 1) + return 7; + if (s.find('l') != 2) + return 8; + if (s.find('x') != ctl::string_view::npos) + return 9; + } + + { + ctl::string_view s = "hello"; + if (s == "world") + return 10; + if (s != "hello") + return 11; + if (s < "hallo") + return 12; + if (s > "world") + return 13; + } + + { + ctl::string_view s = "hello"; + auto it = s.begin(); + if (*it != 'h') + return 14; + ++it; + if (*it != 'e') + return 15; + } + + { + ctl::string_view s = "hello"; + ctl::string_view s2 = std::move(s); + if (s2 != "hello") + return 16; + if (s.empty()) + return 17; + } + + { + ctl::string_view s = "hello"; + ctl::string_view sub = s.substr(1, 3); + if (sub != "ell") + return 18; + sub = s.substr(2); + if (sub != "llo") + return 19; + } + + { + ctl::string_view s = "hello"; + if (!s.ends_with("lo")) + return 20; + if (s.ends_with("el")) + return 21; + } + + { + ctl::string_view s = "hello"; + if (s.find('e') != 1) + return 22; + if (s.find('l') != 2) + return 23; + if (s.find('x') != ctl::string_view::npos) + return 24; + } + + { + ctl::string_view s = "hello"; + if (s[0] != 'h' || s[1] != 'e' || s[2] != 'l' || s[3] != 'l' || + s[4] != 'o') + return 25; + } + + { + ctl::string_view s = "hello"; + if (s.size() != 5) + return 26; + if (s.length() != 5) + return 27; + } + + { + ctl::string_view a = "a"; + ctl::string_view b = "a"; + if (a.compare(b) != 0) + return 28; + } + + { + ctl::string_view a = "a"; + ctl::string_view b = "b"; + if (a.compare(b) >= 0) + return 29; + } + + { + ctl::string_view a = "a"; + ctl::string_view b = "ab"; + if (a.compare(b) >= 0) + return 30; + } + + { + ctl::string_view a = "ab"; + ctl::string_view b = "a"; + if (a.compare(b) <= 0) + return 31; + } + + { + ctl::string_view a = ""; + ctl::string_view b = ""; + if (a.compare(b) != 0) + return 32; + } + + CheckForMemoryLeaks(); + return 0; +} diff --git a/test/ctl/vector_test.cc b/test/ctl/vector_test.cc new file mode 100644 index 000000000..214eef454 --- /dev/null +++ b/test/ctl/vector_test.cc @@ -0,0 +1,319 @@ +// -*- mode:c++; indent-tabs-mode:nil; c-basic-offset:4; coding:utf-8 -*- +// vi: set et ft=cpp ts=4 sts=4 sw=4 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 "ctl/vector.h" + +#include + +#include "ctl/string.h" + +// #include +// #include +// #define ctl std + +int +main() +{ + + { + int x = 3; + ctl::vector A; + A.push_back(1); + A.push_back(2); + A.push_back(x); + if (A[0] != 1) + return 1; + if (A[1] != 2) + return 2; + if (A[2] != 3) + return 3; + if (A.size() != 3) + return 4; + } + + { + ctl::string yo = "foo"; + ctl::vector A; + A.push_back("fun"); + A.push_back(std::move(yo)); + if (yo != "") + return 5; + A.emplace_back("bar"); + if (A[0] != "fun") + return 7; + if (A[1] != "foo") + return 8; + if (A[2] != "bar") + return 9; + if (A.size() != 3) + return 10; + } + + { + ctl::vector A; + if (!A.empty()) + return 11; + A.push_back(5); + if (A.empty()) + return 12; + if (A.front() != 5) + return 13; + if (A.back() != 5) + return 14; + } + + { + ctl::vector A; + A.push_back(1); + A.push_back(2); + A.push_back(3); + ctl::vector B(A); + if (B.size() != 3) + return 15; + if (B[0] != 1 || B[1] != 2 || B[2] != 3) + return 16; + } + + { + ctl::vector A; + A.push_back(1); + A.push_back(2); + A.push_back(3); + ctl::vector B(std::move(A)); + if (A.size() != 0) + return 17; + if (B.size() != 3) + return 18; + if (B[0] != 1 || B[1] != 2 || B[2] != 3) + return 19; + } + + { + ctl::vector A; + A.push_back(1); + A.push_back(2); + A.push_back(3); + ctl::vector B; + B = A; + if (B.size() != 3) + return 20; + if (B[0] != 1 || B[1] != 2 || B[2] != 3) + return 21; + } + + { + ctl::vector A; + A.push_back(1); + A.push_back(2); + A.push_back(3); + ctl::vector B; + B = std::move(A); + if (A.size() != 0) + return 22; + if (B.size() != 3) + return 23; + if (B[0] != 1 || B[1] != 2 || B[2] != 3) + return 24; + } + + { + ctl::vector A; + A.push_back(1); + A.push_back(2); + A.push_back(3); + A.pop_back(); + if (A.size() != 2) + return 25; + if (A[0] != 1 || A[1] != 2) + return 26; + } + + { + ctl::vector A; + A.resize(5); + if (A.size() != 5) + return 27; + A.resize(3); + if (A.size() != 3) + return 28; + } + + { + ctl::vector A; + A.push_back(1); + A.push_back(2); + A.push_back(3); + ctl::vector B; + B.push_back(4); + B.push_back(5); + A.swap(B); + if (A.size() != 2) + return 29; + if (B.size() != 3) + return 30; + if (A[0] != 4 || A[1] != 5) + return 31; + if (B[0] != 1 || B[1] != 2 || B[2] != 3) + return 32; + } + + { + ctl::vector A; + A.push_back(1); + A.push_back(2); + A.push_back(3); + A.clear(); + if (A.size() != 0) + return 33; + if (!A.empty()) + return 34; + } + + { + ctl::vector A; + A.push_back(1); + A.push_back(2); + A.push_back(3); + ctl::vector::iterator it = A.begin(); + if (*it != 1) + return 35; + ++it; + if (*it != 2) + return 36; + ++it; + if (*it != 3) + return 37; + ++it; + if (it != A.end()) + return 38; + } + + { + ctl::vector A; + A.push_back(1); + A.push_back(2); + A.push_back(3); + ctl::vector::const_iterator cit = A.cbegin(); + if (*cit != 1) + return 39; + ++cit; + if (*cit != 2) + return 40; + ++cit; + if (*cit != 3) + return 41; + ++cit; + if (cit != A.cend()) + return 42; + } + + { + ctl::vector A; + for (int i = 0; i < 100; ++i) { + A.push_back(i); + } + if (A.size() != 100) + return 51; + for (int i = 0; i < 100; ++i) { + if (A[i] != i) + return 52; + } + } + + { + ctl::vector A; + A.push_back(1); + A.push_back(2); + A.push_back(3); + ctl::vector B(A); + if (B.size() != 3) + return 53; + B.push_back(4); + if (A.size() != 3) + return 54; + if (B.size() != 4) + return 55; + } + + { + ctl::vector A; + A.reserve(100); + if (A.size() != 0) + return 56; + if (A.capacity() != 100) + return 57; + A.push_back(1); + if (A.size() != 1) + return 58; + if (A.capacity() != 100) + return 59; + } + + { + ctl::vector A; + A.push_back(1); + A.push_back(2); + A.push_back(3); + ctl::vector B; + B = A; + if (B.size() != 3) + return 60; + B.push_back(4); + if (A.size() != 3) + return 61; + if (B.size() != 4) + return 62; + } + + { + ctl::vector A; + A.push_back(1); + A.push_back(2); + A.push_back(3); + ctl::vector B; + B = std::move(A); + if (A.size() != 0) + return 63; + if (B.size() != 3) + return 64; + if (B[0] != 1 || B[1] != 2 || B[2] != 3) + return 65; + } + + { + ctl::vector A; + A.push_back(1); + A.push_back(2); + A.push_back(3); + ctl::vector B; + B.push_back(4); + B.push_back(5); + A.swap(B); + if (A.size() != 2) + return 66; + if (B.size() != 3) + return 67; + if (A[0] != 4 || A[1] != 5) + return 68; + if (B[0] != 1 || B[1] != 2 || B[2] != 3) + return 69; + } + + CheckForMemoryLeaks(); + return 0; +} diff --git a/test/dsp/core/illumination_test.c b/test/dsp/core/illumination_test.c index da113648c..491f61315 100644 --- a/test/dsp/core/illumination_test.c +++ b/test/dsp/core/illumination_test.c @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "dsp/core/core.h" #include "dsp/core/illumination.h" +#include "dsp/core/core.h" #include "libc/log/log.h" #include "libc/math.h" #include "libc/testlib/ezbench.h" 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/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/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..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; @@ -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/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/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/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/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/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)); } diff --git a/test/libc/calls/open_test.c b/test/libc/calls/open_test.c index dcdec159f..6125684ba 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/")); @@ -350,18 +356,18 @@ TEST(open, readOnlyCreatMode) { ASSERT_EQ(0100500, st.st_mode); if (getuid()) { ASSERT_SYS(EACCES, -1, open("x", O_RDWR)); - ASSERT_SYS(EACCES, -1, open("x", O_RDWR | O_CREAT)); + ASSERT_SYS(EACCES, -1, open("x", O_RDWR | O_CREAT, 0666)); } else { // root is invulnerable to eacces ASSERT_SYS(0, 3, open("x", O_RDWR)); ASSERT_SYS(0, 0, close(3)); - ASSERT_SYS(0, 3, open("x", O_RDWR | O_CREAT)); + ASSERT_SYS(0, 3, open("x", O_RDWR | O_CREAT, 0666)); ASSERT_SYS(0, 0, close(3)); SPAWN(fork); setuid(1000); setgid(1000); ASSERT_SYS(EACCES, -1, open("x", O_RDWR)); - ASSERT_SYS(EACCES, -1, open("x", O_RDWR | O_CREAT)); + ASSERT_SYS(EACCES, -1, open("x", O_RDWR | O_CREAT, 0666)); EXITS(0); } } @@ -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..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) { @@ -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/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/readlinkat_test.c b/test/libc/calls/readlinkat_test.c index 0d3d5a4a3..7c7eacca7 100644 --- a/test/libc/calls/readlinkat_test.c +++ b/test/libc/calls/readlinkat_test.c @@ -105,8 +105,22 @@ 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)); } + +TEST(readlinkat, c_drive) { + char buf[PATH_MAX]; + ASSERT_SYS(EINVAL, -1, readlinkat(AT_FDCWD, "/", buf, PATH_MAX)); + if (!IsWindows()) + return; + ASSERT_SYS(EINVAL, -1, readlinkat(AT_FDCWD, "/c/", buf, PATH_MAX)); + ASSERT_SYS(EINVAL, -1, readlinkat(AT_FDCWD, "/c", buf, PATH_MAX)); + ASSERT_SYS(EINVAL, -1, readlinkat(AT_FDCWD, "c:", buf, PATH_MAX)); + ASSERT_SYS(EINVAL, -1, readlinkat(AT_FDCWD, "c:/", buf, PATH_MAX)); + ASSERT_SYS(EINVAL, -1, readlinkat(AT_FDCWD, "c:\\", buf, PATH_MAX)); +} 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/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/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..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" @@ -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..d9e5cb735 100644 --- a/test/libc/calls/sigaction_test.c +++ b/test/libc/calls/sigaction_test.c @@ -81,7 +81,7 @@ void PromisedLand(void *arg) { pthread_exit(arg); } -void Teleporter(int sig, struct siginfo *si, void *ctx) { +void Teleporter(int sig, siginfo_t *si, void *ctx) { ucontext_t *uc = ctx; sigaddset(&uc->uc_sigmask, SIGUSR1); uc->uc_mcontext.PC = (uintptr_t)PromisedLand; @@ -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; @@ -176,7 +177,7 @@ TEST(sigaction, testPingPongParentChildWithSigint) { volatile int trapeax; -void OnTrap(int sig, struct siginfo *si, void *vctx) { +void OnTrap(int sig, siginfo_t *si, void *vctx) { struct ucontext *ctx = vctx; CheckStackIsAligned(); trapeax = ctx->uc_mcontext.rax; @@ -202,7 +203,7 @@ void SkipOverFaultingInstruction(struct ucontext *ctx) { ctx->uc_mcontext.rip += xedd.length; } -void OnFpe(int sig, struct siginfo *si, void *vctx) { +void OnFpe(int sig, siginfo_t *si, void *vctx) { struct ucontext *ctx = vctx; CheckStackIsAligned(); SkipOverFaultingInstruction(ctx); @@ -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,23 +266,27 @@ 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()); } sig_atomic_t gotusr1; -void OnSigMask(int sig, struct siginfo *si, void *ctx) { +void OnSigMask(int sig, siginfo_t *si, void *ctx) { ucontext_t *uc = ctx; sigaddset(&uc->uc_sigmask, sig); gotusr1 = true; @@ -321,7 +329,7 @@ TEST(sig_ign, discardsPendingSignalsEvenIfBlocked) { ASSERT_SYS(0, 0, sigprocmask(SIG_SETMASK, &oldmask, 0)); } -void AutoMask(int sig, struct siginfo *si, void *ctx) { +void AutoMask(int sig, siginfo_t *si, void *ctx) { sigset_t ss; ucontext_t *uc = ctx; sigprocmask(SIG_SETMASK, 0, &ss); @@ -339,7 +347,7 @@ TEST(sigaction, signalBeingDeliveredGetsAutoMasked) { EXPECT_FALSE(sigismember(&ss, SIGUSR2)); // original mask } -void NoDefer(int sig, struct siginfo *si, void *ctx) { +void NoDefer(int sig, siginfo_t *si, void *ctx) { sigset_t ss; ucontext_t *uc = ctx; sigprocmask(SIG_SETMASK, 0, &ss); @@ -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/signal_test.c b/test/libc/calls/signal_test.c index 988a454dd..74dfad41b 100644 --- a/test/libc/calls/signal_test.c +++ b/test/libc/calls/signal_test.c @@ -48,12 +48,12 @@ TEST(signal, test) { //////////////////////////////////////////////////////////////////////////////// // signal round-trip delivery takes about 1µs -void OnSigTrap(int sig, struct siginfo *si, void *ctx) { +void OnSigTrap(int sig, siginfo_t *si, void *ctx) { } void TrapBench(int n) { for (int i = 0; i < n; ++i) { - __builtin_trap(); + DebugBreak(); } } @@ -79,7 +79,7 @@ BENCH(signal, trapBenchSiginfo) { #ifdef __x86_64__ -void OnSigHlt(int sig, struct siginfo *si, void *vctx) { +void OnSigHlt(int sig, siginfo_t *si, void *vctx) { struct ucontext *ctx = vctx; ctx->uc_mcontext.rip += 1; } diff --git a/test/libc/calls/sigtimedwait_test.c b/test/libc/calls/sigtimedwait_test.c index d6260f302..9103485c5 100644 --- a/test/libc/calls/sigtimedwait_test.c +++ b/test/libc/calls/sigtimedwait_test.c @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/calls/calls.h" #include "libc/calls/sigtimedwait.h" +#include "libc/calls/calls.h" #include "libc/calls/struct/siginfo.h" #include "libc/calls/struct/siginfo.internal.h" #include "libc/calls/struct/sigset.h" @@ -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/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(); 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..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" @@ -94,7 +95,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 +153,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 +182,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 +225,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 +264,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 +281,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")); @@ -331,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)); diff --git a/test/libc/calls/utimensat_test.c b/test/libc/calls/utimensat_test.c index 8595700f7..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(); @@ -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/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/fmt/zleb64_test.c b/test/libc/fmt/zleb64_test.c index 78491b5ca..e521f347b 100644 --- a/test/libc/fmt/zleb64_test.c +++ b/test/libc/fmt/zleb64_test.c @@ -18,8 +18,8 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/fmt/leb128.h" #include "libc/limits.h" -#include "libc/mem/mem.h" #include "libc/mem/gc.h" +#include "libc/mem/mem.h" #include "libc/testlib/testlib.h" TEST(zleb64, testZero) { diff --git a/test/libc/intrin/BUILD.mk b/test/libc/intrin/BUILD.mk index a81ea4d76..70336cb46 100644 --- a/test/libc/intrin/BUILD.mk +++ b/test/libc/intrin/BUILD.mk @@ -3,7 +3,9 @@ PKGS += TEST_LIBC_INTRIN -TEST_LIBC_INTRIN_SRCS := $(wildcard test/libc/intrin/*.c) +TEST_LIBC_INTRIN_FILES := $(wildcard test/libc/intrin/*) +TEST_LIBC_INTRIN_SRCS = $(filter %.c,$(TEST_LIBC_INTRIN_FILES)) +TEST_LIBC_INTRIN_INCS = $(filter %.inc,$(TEST_LIBC_INTRIN_FILES)) TEST_LIBC_INTRIN_SRCS_TEST = $(filter %_test.c,$(TEST_LIBC_INTRIN_SRCS)) TEST_LIBC_INTRIN_OBJS = \ diff --git a/test/libc/intrin/demangle_cases.inc b/test/libc/intrin/demangle_cases.inc new file mode 100644 index 000000000..40b64d140 --- /dev/null +++ b/test/libc/intrin/demangle_cases.inc @@ -0,0 +1,40452 @@ +const char* demangle_cases[][2] = { + {"_Z1A", "A"}, + {"_Z1Av", "A()"}, + {"_Z1A1B1C", "A(B, C)"}, + + // {"_Z1fDB3_", + // "f(_BitInt(3))"}, + // got error + + + // {"_Z1fDU10_", + // "f(unsigned _BitInt(10))"}, + // got error + + + // {"_Z1fIfEvDUstPT__", + // "void f(unsigned _BitInt(sizeof (float*)))"}, + // got error + + + // {"_Z1fIiEvDBstPT__", + // "void f(_BitInt(sizeof (int*)))"}, + // got error + + {"_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*))"}, + {"_ZN4dyld19openSharedCacheFileEv", "dyld::openSharedCacheFile()"}, + {"_ZN4dyld15setErrorMessageEPKc", "dyld::setErrorMessage(char const*)"}, + {"_ZN4dyld22registerRemoveCallbackEPFvPK11mach_headerlE", "dyld::registerRemoveCallback(void (*)(mach_header const*, long))"}, + {"_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))"}, + {"_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*))"}, + {"_ZN4dyld37registerImageStateSingleChangeHandlerE17dyld_image_statesPFPKcS0_jPK15dyld_image_infoE", "dyld::registerImageStateSingleChangeHandler(dyld_image_states, char const* (*)(dyld_image_states, unsigned int, dyld_image_info const*))"}, + {"_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*)"}, + {"_ZN9__gnu_cxx13new_allocatorIPFvPK11mach_headerlEE8allocateEmPKv", "__gnu_cxx::new_allocator::allocate(unsigned long, void const*)"}, + {"_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)"}, + {"_ZN5clang7ASTUnitC5Eb", "clang::ASTUnit::ASTUnit(bool)"}, + {"_ZN5clang7ASTUnitD0Ev", "clang::ASTUnit::~ASTUnit()"}, + {"_ZN5clang7ASTUnitD1Ev", "clang::ASTUnit::~ASTUnit()"}, + {"_ZN5clang7ASTUnitD2Ev", "clang::ASTUnit::~ASTUnit()"}, + {"_ZN5clang7ASTUnitD4Ev", "clang::ASTUnit::~ASTUnit()"}, + {"_ZN5clang7ASTUnitD5Ev", "clang::ASTUnit::~ASTUnit()"}, + {"_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&))"}, + // "void std::__unguarded_linear_insert*, std::pair, bool (*)(std::pair const&, std::pair const&)>(llvm::APSInt, clang::EnumConstantDecl*, std::pair*)" was returned + + + // {"_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&))"}, + // "void std::__unguarded_linear_insert*, std::pair, bool (*)(std::pair const&, std::pair const&)>(llvm::APSInt, clang::CaseStmt*, std::pair*)" was returned + + + // {"_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"}, + {"_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"}, + {"_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*)"}, + // "clang::CXXBasePaths::lookupInBases(clang::ASTContext&, clang::CXXRecordDecl const*, bool (*)(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*), bool (*)(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*))" was returned + + {"_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*)"}, + {"_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&)"}, + {"_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*)"}, + {"_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/intrin/demangle_test.c b/test/libc/intrin/demangle_test.c new file mode 100644 index 000000000..3ec28860c --- /dev/null +++ b/test/libc/intrin/demangle_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 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[19500]; + +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); +} + +static int test_cases_success(void) { + 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(stderr, "%s:%d: error: demangle failed\n", __FILE__, __LINE__); + fprintf(stderr, "\tinput %`'s\n", input); + fprintf(stderr, "\t want %`'s\n", want); + return 1; + } + if (strcmp(want, got)) { + fprintf(stderr, "%s:%d: error: demangle incorrect\n", __FILE__, __LINE__); + fprintf(stderr, "\tinput %`'s\n", input); + fprintf(stderr, "\t want %`'s\n", want); + fprintf(stderr, "\t got %`'s\n", got); + return 2; + } + } + return 0; +} + +static int test_is_mangled(void) { + if (__is_mangled(0)) + return 3; + if (__is_mangled("")) + return 4; + if (__is_mangled("__dlmalloc")) + return 5; + if (!__is_mangled("_ZN4dyld18getCoalescedImagesEPP11ImageLoader")) + return 6; + if (!__is_mangled("_GLOBAL__I_lol")) + return 7; + return 0; +} + +static int test_oom(void) { + char got[2048]; + const char *sym = "_ZN10__cxxabiv112_GLOBAL__N_119InitByteGlobalMutexINS0_" + "11LibcppMutexENS0_13LibcppCondVarEL_ZNS0_" + "12GlobalStaticIS2_E8instanceEEL_ZNS4_IS3_E8instanceEEXadL_" + "ZNS0_16PlatformThreadIDEvEEE9LockGuardC2EPKc"; + if (__demangle(got, sym, sizeof(got)) != -1) + return 8; + return 0; +} + +static int test_compiler_suffixes(void) { + char got[1400]; + const char *sym = "_ZN12_GLOBAL__N_18tinyBLASILi6ELi8EDv8_fS1_" + "fffE4gemmILi1ELi1ELi0EEEvllll.constprop.0"; + if (__demangle(got, sym, sizeof(got)) == -1) + return 9; + return 0; +} + +static int test_weird_destructors(void) { + char got[216]; + const char *sym = "_ZN13AutoEncoderKLD5Ev"; + if (__demangle(got, sym, sizeof(got)) == -1) + return 10; + if (strcmp(got, "AutoEncoderKL::~AutoEncoderKL()")) + return 11; + return 0; +} + +static int test_guard_variable(void) { + char got[250]; + const char *sym = "_ZGVZ23llama_print_system_infoE1s"; + if (__demangle(got, sym, sizeof(got)) == -1) + return 10; + if (strcmp(got, "guard variable for llama_print_system_info::s")) + return 11; + return 0; +} + +int main() { + int rc; + if ((rc = test_guard_variable())) + return rc; + if ((rc = test_weird_destructors())) + return rc; + if ((rc = test_compiler_suffixes())) + return rc; + if ((rc = test_cases_success())) + return rc; + if ((rc = test_is_mangled())) + return rc; + if ((rc = test_oom())) + return rc; +} diff --git a/test/libc/intrin/describegidlist_test.c b/test/libc/intrin/describegidlist_test.c index 1b9d61376..98c6a3408 100644 --- a/test/libc/intrin/describegidlist_test.c +++ b/test/libc/intrin/describegidlist_test.c @@ -23,8 +23,8 @@ TEST(DescribeGidList, test) { uint32_t list[] = {8, 67, 530, 9}; uint32_t biglist[] = {8, 67, 530, 9, 8, 67, 530, 9, 8, 67, 530, 9, - 8, 67, 530, 9, 8, 67, 530, 9, 8, 67, 530, 9, - 8, 67, 530, 9, 8, 67, 530, 9, 8, 67, 530, 9}; + 8, 67, 530, 9, 8, 67, 530, 9, 8, 67, 530, 9, + 8, 67, 530, 9, 8, 67, 530, 9, 8, 67, 530, 9}; EXPECT_STREQ("n/a", DescribeGidList(-1, sizeof(list) / sizeof(list[0]), list)); EXPECT_STREQ("n/a", DescribeGidList(0, -1, list)); diff --git a/test/libc/intrin/kprintf_test.c b/test/libc/intrin/kprintf_test.c index f091d48b0..9818aaf49 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; @@ -214,9 +215,9 @@ TEST(ksnprintf, testSymbols) { hassymbols = GetSymbolTable(); ksnprintf(b[0], 32, "%t", strlen); if (hassymbols) { - ASSERT_STREQ("&strlen", b[0]); + ASSERT_STREQ("strlen", b[0]); } else { - ksnprintf(b[1], 32, "&%lx", strlen); + ksnprintf(b[1], 32, "%lx", strlen); ASSERT_STREQ(b[1], b[0]); } } @@ -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/lockipc_test.c b/test/libc/intrin/lockipc_test.c index f9111c997..4123c09af 100644 --- a/test/libc/intrin/lockipc_test.c +++ b/test/libc/intrin/lockipc_test.c @@ -30,7 +30,7 @@ struct SharedMemory { pthread_mutex_t mutex; volatile long x; -} * shm; +}* shm; void Worker(void) { long t; 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/tinymath/magicu_test.c b/test/libc/intrin/magicu_test.c similarity index 90% rename from test/libc/tinymath/magicu_test.c rename to test/libc/intrin/magicu_test.c index 55ad461bd..2458f378e 100644 --- a/test/libc/tinymath/magicu_test.c +++ b/test/libc/intrin/magicu_test.c @@ -16,13 +16,13 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/tinymath/magicu.h" +#include "libc/intrin/magicu.h" #include "libc/limits.h" #include "libc/macros.internal.h" #include "libc/runtime/runtime.h" #include "libc/testlib/ezbench.h" #include "libc/testlib/testlib.h" -#include "libc/tinymath/magicu.h" +#include "libc/intrin/magicu.h" #define T uint32_t #define TBIT (sizeof(T) * CHAR_BIT - 1) @@ -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)); @@ -46,6 +47,13 @@ TEST(magicu, test) { } } +TEST(magicu, max) { + ASSERT_EQ(0, __magicu_div(0, __magicu_get(-1))); + ASSERT_EQ(0, __magicu_div(1, __magicu_get(-1))); + ASSERT_EQ(0, __magicu_div(100, __magicu_get(-1))); + ASSERT_EQ(0, __magicu_div(-2, __magicu_get(-1))); +} + BENCH(magicu, bench) { struct magicu d = __magicu_get(UINT32_MAX); EZBENCH2("__magicu_get", donothing, __magicu_get(__veil("r", UINT32_MAX))); 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..96f52b289 100644 --- a/test/libc/mem/malloc_test.c +++ b/test/libc/mem/malloc_test.c @@ -23,10 +23,10 @@ #include "libc/errno.h" #include "libc/intrin/asan.internal.h" #include "libc/intrin/cxaatexit.internal.h" +#include "libc/intrin/kprintf.h" #include "libc/intrin/safemacros.internal.h" #include "libc/macros.internal.h" #include "libc/mem/gc.h" -#include "libc/mem/gc.h" #include "libc/mem/mem.h" #include "libc/runtime/internal.h" #include "libc/runtime/memtrack.internal.h" @@ -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 @@ -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) { @@ -199,19 +212,20 @@ BENCH(bulk_free, bench) { #define ITERATIONS 10000 void *Worker(void *arg) { - for (int i = 0; i < ITERATIONS; ++i) { - char *p; - ASSERT_NE(NULL, (p = malloc(lemur64() % 128))); - ASSERT_NE(NULL, (p = realloc(p, max(lemur64() % 128, 1)))); - free(p); - } + /* for (int i = 0; i < ITERATIONS; ++i) { */ + /* char *p; */ + /* ASSERT_NE(NULL, (p = malloc(lemur64() % 128))); */ + /* ASSERT_NE(NULL, (p = realloc(p, max(lemur64() % 128, 1)))); */ + /* free(p); */ + /* } */ return 0; } BENCH(malloc, torture) { - int i, n = __get_cpu_count() * 2; + int i, n = __get_cpu_count(); 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/prog/sock.c b/test/libc/mem/prog/sock.c index 686937c03..914be959c 100644 --- a/test/libc/mem/prog/sock.c +++ b/test/libc/mem/prog/sock.c @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/errno.h" #include "libc/sock/sock.h" +#include "libc/errno.h" #include "libc/sysv/consts/af.h" #include "libc/sysv/consts/sock.h" diff --git a/test/libc/mem/qsort_test.c b/test/libc/mem/qsort_test.c index 197653bdd..e693da6b6 100644 --- a/test/libc/mem/qsort_test.c +++ b/test/libc/mem/qsort_test.c @@ -19,7 +19,6 @@ #include "libc/macros.internal.h" #include "libc/mem/alg.h" #include "libc/mem/gc.h" -#include "libc/mem/gc.h" #include "libc/mem/mem.h" #include "libc/runtime/runtime.h" #include "libc/stdio/rand.h" @@ -31,8 +30,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 +73,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 +115,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 +126,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 +139,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 +163,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 +188,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 +204,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/mem/realpath_test.c b/test/libc/mem/realpath_test.c index a4796d091..ac1be2cae 100644 --- a/test/libc/mem/realpath_test.c +++ b/test/libc/mem/realpath_test.c @@ -20,6 +20,7 @@ #include "libc/dce.h" #include "libc/errno.h" #include "libc/intrin/strace.internal.h" +#include "libc/limits.h" #include "libc/mem/gc.h" #include "libc/mem/mem.h" #include "libc/runtime/runtime.h" @@ -79,3 +80,12 @@ TEST(realpath, test6) { ASSERT_NE(NULL, name); EXPECT_STREQ("/", name); } + +TEST(realpath, c_drive) { + if (!IsWindows()) + return; + char buf[PATH_MAX]; + ASSERT_STREQ("/c", realpath("c:", buf)); + ASSERT_STREQ("/c", realpath("c:", buf)); + ASSERT_STREQ("/c/Windows", realpath("c:\\Windows", buf)); +} 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/nexgen32e/strsak32_test.c b/test/libc/nexgen32e/strsak32_test.c index 18e0be763..4508ed735 100644 --- a/test/libc/nexgen32e/strsak32_test.c +++ b/test/libc/nexgen32e/strsak32_test.c @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/nexgen32e/nexgen32e.h" #include "libc/mem/gc.h" +#include "libc/nexgen32e/nexgen32e.h" #include "libc/str/str.h" #include "libc/testlib/ezbench.h" #include "libc/testlib/hyperion.h" 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..07284b4ee 100644 --- a/test/libc/proc/handkill_test.c +++ b/test/libc/proc/handkill_test.c @@ -41,7 +41,7 @@ struct SharedMemory { atomic_bool ready; atomic_bool got_signal; atomic_bool handler_returned; -} * shm; +} *shm; void OnSig(int sig) { signal(SIGUSR1, SIG_DFL); @@ -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..6e2a7f65d 100644 --- a/test/libc/proc/sched_getaffinity_test.c +++ b/test/libc/proc/sched_getaffinity_test.c @@ -23,8 +23,8 @@ #include "libc/fmt/conv.h" #include "libc/intrin/popcnt.h" #include "libc/intrin/safemacros.internal.h" -#include "libc/runtime/runtime.h" #include "libc/proc/posix_spawn.h" +#include "libc/runtime/runtime.h" #include "libc/testlib/subprocess.h" #include "libc/testlib/testlib.h" #include "libc/thread/thread.h" @@ -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/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 993bc73b2..000000000 --- a/test/libc/release/smoke.c +++ /dev/null @@ -1,14 +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(xiso8601ts(NULL)), f); */ - 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/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..9609b05de 100644 --- a/test/libc/runtime/grow_test.c +++ b/test/libc/runtime/grow_test.c @@ -21,7 +21,6 @@ #include "libc/macros.internal.h" #include "libc/mem/internal.h" #include "libc/mem/mem.h" -#include "libc/nt/enum/version.h" #include "libc/runtime/runtime.h" #include "libc/stdio/stdio.h" #include "libc/str/str.h" @@ -70,8 +69,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..bac4cf73e 100644 --- a/test/libc/runtime/mprotect_test.c +++ b/test/libc/runtime/mprotect_test.c @@ -73,13 +73,13 @@ void SkipOverFaultingInstruction(struct ucontext *ctx) { #endif } -void OnSigSegv(int sig, struct siginfo *si, void *vctx) { +void OnSigSegv(int sig, siginfo_t *si, void *vctx) { struct ucontext *ctx = vctx; gotsegv = true; SkipOverFaultingInstruction(ctx); } -void OnSigBus(int sig, struct siginfo *si, void *vctx) { +void OnSigBus(int sig, siginfo_t *si, void *vctx) { struct ucontext *ctx = vctx; gotbusted = true; SkipOverFaultingInstruction(ctx); @@ -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/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/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/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/nonblock_test.c b/test/libc/sock/nonblock_test.c index 8e639e624..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" @@ -37,7 +38,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 = { @@ -106,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/sock/recvfrom_test.c b/test/libc/sock/recvfrom_test.c index acb2cf9e1..4ef3c7a11 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, @@ -92,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)); +} 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/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..b3a5e1d32 100644 --- a/test/libc/sock/socket_test.c +++ b/test/libc/sock/socket_test.c @@ -152,7 +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); diff --git a/test/libc/sock/unix_test.c b/test/libc/sock/unix_test.c index 3c3c0821f..f5847513b 100644 --- a/test/libc/sock/unix_test.c +++ b/test/libc/sock/unix_test.c @@ -23,7 +23,6 @@ #include "libc/dce.h" #include "libc/errno.h" #include "libc/nexgen32e/vendor.internal.h" -#include "libc/nt/version.h" #include "libc/runtime/internal.h" #include "libc/runtime/runtime.h" #include "libc/sock/sock.h" @@ -35,7 +34,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(); @@ -43,7 +42,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 +60,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 +96,6 @@ void StreamServer(atomic_bool *ready) { TEST(unix, stream) { int ws; - 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 +104,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 +118,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 +155,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/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/crypt_test.c b/test/libc/stdio/crypt_test.c index b3c4d50ff..c61963435 100644 --- a/test/libc/stdio/crypt_test.c +++ b/test/libc/stdio/crypt_test.c @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/testlib/testlib.h" #include "third_party/musl/crypt.h" +#include "libc/testlib/testlib.h" TEST(crypt, test) { // consistent with python crypt.crypt() diff --git a/test/libc/stdio/devrand_test.c b/test/libc/stdio/devrand_test.c index 0eca6ac64..f0b238232 100644 --- a/test/libc/stdio/devrand_test.c +++ b/test/libc/stdio/devrand_test.c @@ -17,9 +17,9 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/dce.h" +#include "libc/mem/gc.h" #include "libc/mem/mem.h" #include "libc/stdio/rand.h" -#include "libc/mem/gc.h" #include "libc/str/str.h" #include "libc/testlib/testlib.h" diff --git a/test/libc/stdio/dirstream_test.c b/test/libc/stdio/dirstream_test.c index 392497840..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"); @@ -61,7 +60,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)); } @@ -158,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); @@ -180,8 +180,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); @@ -192,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); } @@ -428,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/dumphexc_test.c b/test/libc/stdio/dumphexc_test.c index 5ad6d0f0d..cd8868f44 100644 --- a/test/libc/stdio/dumphexc_test.c +++ b/test/libc/stdio/dumphexc_test.c @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/mem/mem.h" #include "libc/mem/gc.h" +#include "libc/mem/mem.h" #include "libc/stdio/hex.internal.h" #include "libc/testlib/ezbench.h" #include "libc/testlib/hyperion.h" 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/fgetln_test.c b/test/libc/stdio/fgetln_test.c index 90890256d..14857cb61 100644 --- a/test/libc/stdio/fgetln_test.c +++ b/test/libc/stdio/fgetln_test.c @@ -18,7 +18,6 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/calls/calls.h" #include "libc/mem/gc.h" -#include "libc/mem/gc.h" #include "libc/mem/mem.h" #include "libc/stdio/stdio.h" #include "libc/str/str.h" 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/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/libc/stdio/fwrite_test.c b/test/libc/stdio/fwrite_test.c index e06d10dca..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" @@ -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/iconv_test.c b/test/libc/stdio/iconv_test.c index 15684679d..9b47df98c 100644 --- a/test/libc/stdio/iconv_test.c +++ b/test/libc/stdio/iconv_test.c @@ -16,9 +16,9 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/mem/mem.h" -#include "libc/mem/gc.h" #include "libc/stdio/iconv.h" +#include "libc/mem/gc.h" +#include "libc/mem/mem.h" #include "libc/stdio/stdio.h" #include "libc/str/str.h" #include "libc/testlib/testlib.h" diff --git a/test/libc/stdio/joinstrlist_test.c b/test/libc/stdio/joinstrlist_test.c index d81eba1ef..bd990cf18 100644 --- a/test/libc/stdio/joinstrlist_test.c +++ b/test/libc/stdio/joinstrlist_test.c @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/serialize.h" #include "libc/mem/mem.h" +#include "libc/serialize.h" #include "libc/stdio/append.h" #include "libc/stdio/strlist.internal.h" #include "libc/testlib/testlib.h" 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/rand_test.c b/test/libc/stdio/rand_test.c index 0ec7b0b3a..d8a6829a1 100644 --- a/test/libc/stdio/rand_test.c +++ b/test/libc/stdio/rand_test.c @@ -17,8 +17,8 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/stdio/rand.h" -#include "libc/serialize.h" #include "libc/mem/mem.h" +#include "libc/serialize.h" #include "libc/str/str.h" #include "libc/testlib/hyperion.h" #include "libc/testlib/testlib.h" 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/stdio/vappendf_test.c b/test/libc/stdio/vappendf_test.c index 72c49c936..c3894660f 100644 --- a/test/libc/stdio/vappendf_test.c +++ b/test/libc/stdio/vappendf_test.c @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/serialize.h" #include "libc/mem/mem.h" +#include "libc/serialize.h" #include "libc/stdio/append.h" #include "libc/str/str.h" #include "libc/testlib/ezbench.h" 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/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/blake2_test.c b/test/libc/str/blake2_test.c index 0b31b16a1..65f2f34e0 100644 --- a/test/libc/str/blake2_test.c +++ b/test/libc/str/blake2_test.c @@ -20,12 +20,16 @@ #include "libc/assert.h" #include "libc/mem/mem.h" #include "libc/stdio/rand.h" +#include "libc/stdio/stdio.h" #include "libc/str/str.h" #include "libc/str/tab.internal.h" #include "libc/testlib/ezbench.h" #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) { diff --git a/test/libc/str/crc32z_test.c b/test/libc/str/crc32z_test.c index 7099a5a11..92f329ace 100644 --- a/test/libc/str/crc32z_test.c +++ b/test/libc/str/crc32z_test.c @@ -17,17 +17,21 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/assert.h" +#include "libc/calls/struct/timespec.h" #include "libc/dce.h" #include "libc/intrin/asan.internal.h" #include "libc/mem/gc.h" #include "libc/mem/mem.h" #include "libc/nexgen32e/crc32.h" #include "libc/nexgen32e/x86feature.h" +#include "libc/stdio/rand.h" #include "libc/stdio/stdio.h" #include "libc/str/str.h" -#include "libc/testlib/ezbench.h" #include "libc/testlib/hyperion.h" #include "libc/testlib/testlib.h" +#include "third_party/aarch64/arm_acle.internal.h" +#include "third_party/aarch64/arm_neon.internal.h" +#include "third_party/intel/immintrin.internal.h" #include "third_party/zlib/zlib.h" #define FANATICS "Fanatics" @@ -38,6 +42,330 @@ static const char hyperion[] = "From forth the loftiest fashion of his sleep / " "..."; +unsigned crc32_reference(unsigned crc, const void *data, size_t size) { + static unsigned tab[256]; + if (!tab[255]) { + for (int d = 0; d < 256; ++d) { + unsigned r = d; + for (int i = 0; i < 8; ++i) + r = r >> 1 ^ (r & 1 ? 0xedb88320u : 0); + tab[d] = r; + } + } + const unsigned char *p = (const unsigned char *)data; + const unsigned char *pe = p + size; + crc = ~crc; + while (p < pe) + crc = crc >> 8 ^ tab[(crc & 255) ^ *p++]; + crc = ~crc; + return crc; +} + +// Calculates CRC32 at 73 GiB/s on AMD Ryzen Threadripper PRO 7995WX. +// "Fast CRC Computation for Generic Polynomials Using PCLMULQDQ Instruction" +// V. Gopal, E. Ozturk, et al., 2009, http://intel.ly/2ySEwL0 +uint32_t crc32_uber_alles(uint32_t crc, const void *data, size_t len) { + const uint8_t *buf = (const uint8_t *)data; + crc = ~crc; +#if defined(__AVX512F__) && defined(__VPCLMULQDQ__) && defined(__PCLMUL__) + if (len >= 256) { + __attribute__((__aligned__(64))) static const uint64_t k1k2[] = { + 0x011542778a, 0x01322d1430, 0x011542778a, 0x01322d1430, + 0x011542778a, 0x01322d1430, 0x011542778a, 0x01322d1430, + }; + __attribute__((__aligned__(64))) static const uint64_t k3k4[] = { + 0x0154442bd4, 0x01c6e41596, 0x0154442bd4, 0x01c6e41596, + 0x0154442bd4, 0x01c6e41596, 0x0154442bd4, 0x01c6e41596, + }; + __attribute__((__aligned__(64))) static const uint64_t k5k6[] = { + 0x01751997d0, + 0x00ccaa009e, + }; + __attribute__((__aligned__(64))) static const uint64_t k7k8[] = { + 0x0163cd6124, + 0x0000000000, + }; + __attribute__((__aligned__(64))) static const uint64_t poly[] = { + 0x01db710641, + 0x01f7011641, + }; + __m512i x0, x1, x2, x3, x4, x5, x6, x7, x8, y5, y6, y7, y8; + __m128i a0, a1, a2, a3; + x1 = _mm512_loadu_si512((__m512i *)(buf + 0x00)); + x2 = _mm512_loadu_si512((__m512i *)(buf + 0x40)); + x3 = _mm512_loadu_si512((__m512i *)(buf + 0x80)); + x4 = _mm512_loadu_si512((__m512i *)(buf + 0xC0)); + x1 = _mm512_xor_si512(x1, _mm512_castsi128_si512(_mm_cvtsi32_si128(crc))); + x0 = _mm512_load_si512((__m512i *)k1k2); + buf += 256; + len -= 256; + while (len >= 256) { + x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); + x6 = _mm512_clmulepi64_epi128(x2, x0, 0x00); + x7 = _mm512_clmulepi64_epi128(x3, x0, 0x00); + x8 = _mm512_clmulepi64_epi128(x4, x0, 0x00); + x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); + x2 = _mm512_clmulepi64_epi128(x2, x0, 0x11); + x3 = _mm512_clmulepi64_epi128(x3, x0, 0x11); + x4 = _mm512_clmulepi64_epi128(x4, x0, 0x11); + y5 = _mm512_loadu_si512((__m512i *)(buf + 0x00)); + y6 = _mm512_loadu_si512((__m512i *)(buf + 0x40)); + y7 = _mm512_loadu_si512((__m512i *)(buf + 0x80)); + y8 = _mm512_loadu_si512((__m512i *)(buf + 0xC0)); + x1 = _mm512_xor_si512(x1, x5); + x2 = _mm512_xor_si512(x2, x6); + x3 = _mm512_xor_si512(x3, x7); + x4 = _mm512_xor_si512(x4, x8); + x1 = _mm512_xor_si512(x1, y5); + x2 = _mm512_xor_si512(x2, y6); + x3 = _mm512_xor_si512(x3, y7); + x4 = _mm512_xor_si512(x4, y8); + buf += 256; + len -= 256; + } + x0 = _mm512_load_si512((__m512i *)k3k4); + x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); + x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); + x1 = _mm512_xor_si512(x1, x2); + x1 = _mm512_xor_si512(x1, x5); + x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); + x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); + x1 = _mm512_xor_si512(x1, x3); + x1 = _mm512_xor_si512(x1, x5); + x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); + x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); + x1 = _mm512_xor_si512(x1, x4); + x1 = _mm512_xor_si512(x1, x5); + while (len >= 64) { + x2 = _mm512_loadu_si512((__m512i *)buf); + x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); + x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); + x1 = _mm512_xor_si512(x1, x2); + x1 = _mm512_xor_si512(x1, x5); + buf += 64; + len -= 64; + } + a0 = _mm_load_si128((__m128i *)k5k6); + a1 = _mm512_extracti32x4_epi32(x1, 0); + a2 = _mm512_extracti32x4_epi32(x1, 1); + a3 = _mm_clmulepi64_si128(a1, a0, 0x00); + a1 = _mm_clmulepi64_si128(a1, a0, 0x11); + a1 = _mm_xor_si128(a1, a3); + a1 = _mm_xor_si128(a1, a2); + a2 = _mm512_extracti32x4_epi32(x1, 2); + a3 = _mm_clmulepi64_si128(a1, a0, 0x00); + a1 = _mm_clmulepi64_si128(a1, a0, 0x11); + a1 = _mm_xor_si128(a1, a3); + a1 = _mm_xor_si128(a1, a2); + a2 = _mm512_extracti32x4_epi32(x1, 3); + a3 = _mm_clmulepi64_si128(a1, a0, 0x00); + a1 = _mm_clmulepi64_si128(a1, a0, 0x11); + a1 = _mm_xor_si128(a1, a3); + a1 = _mm_xor_si128(a1, a2); + a2 = _mm_clmulepi64_si128(a1, a0, 0x10); + a3 = _mm_setr_epi32(~0, 0, ~0, 0); + a1 = _mm_srli_si128(a1, 8); + a1 = _mm_xor_si128(a1, a2); + a0 = _mm_loadl_epi64((__m128i *)k7k8); + a2 = _mm_srli_si128(a1, 4); + a1 = _mm_and_si128(a1, a3); + a1 = _mm_clmulepi64_si128(a1, a0, 0x00); + a1 = _mm_xor_si128(a1, a2); + a0 = _mm_load_si128((__m128i *)poly); + a2 = _mm_and_si128(a1, a3); + a2 = _mm_clmulepi64_si128(a2, a0, 0x10); + a2 = _mm_and_si128(a2, a3); + a2 = _mm_clmulepi64_si128(a2, a0, 0x00); + a1 = _mm_xor_si128(a1, a2); + crc = _mm_extract_epi32(a1, 1); + } +#endif +#if defined(__SSE4_2__) && defined(__PCLMUL__) + if (len >= 64) { + __attribute__((__aligned__(16))) static const uint64_t k1k2[] = { + 0x0154442bd4, + 0x01c6e41596, + }; + __attribute__((__aligned__(16))) static const uint64_t k3k4[] = { + 0x01751997d0, + 0x00ccaa009e, + }; + __attribute__((__aligned__(16))) static const uint64_t k5k0[] = { + 0x0163cd6124, + 0x0000000000, + }; + __attribute__((__aligned__(16))) static const uint64_t poly[] = { + 0x01db710641, + 0x01f7011641, + }; + __m128i x0, x1, x2, x3, x4, x5, x6, x7, x8, y5, y6, y7, y8; + x1 = _mm_loadu_si128((__m128i *)(buf + 0x00)); + x2 = _mm_loadu_si128((__m128i *)(buf + 0x10)); + x3 = _mm_loadu_si128((__m128i *)(buf + 0x20)); + x4 = _mm_loadu_si128((__m128i *)(buf + 0x30)); + x1 = _mm_xor_si128(x1, _mm_cvtsi32_si128(crc)); + x0 = _mm_load_si128((__m128i *)k1k2); + buf += 64; + len -= 64; + while (len >= 64) { + x5 = _mm_clmulepi64_si128(x1, x0, 0x00); + x6 = _mm_clmulepi64_si128(x2, x0, 0x00); + x7 = _mm_clmulepi64_si128(x3, x0, 0x00); + x8 = _mm_clmulepi64_si128(x4, x0, 0x00); + x1 = _mm_clmulepi64_si128(x1, x0, 0x11); + x2 = _mm_clmulepi64_si128(x2, x0, 0x11); + x3 = _mm_clmulepi64_si128(x3, x0, 0x11); + x4 = _mm_clmulepi64_si128(x4, x0, 0x11); + y5 = _mm_loadu_si128((__m128i *)(buf + 0x00)); + y6 = _mm_loadu_si128((__m128i *)(buf + 0x10)); + y7 = _mm_loadu_si128((__m128i *)(buf + 0x20)); + y8 = _mm_loadu_si128((__m128i *)(buf + 0x30)); + x1 = _mm_xor_si128(x1, x5); + x2 = _mm_xor_si128(x2, x6); + x3 = _mm_xor_si128(x3, x7); + x4 = _mm_xor_si128(x4, x8); + x1 = _mm_xor_si128(x1, y5); + x2 = _mm_xor_si128(x2, y6); + x3 = _mm_xor_si128(x3, y7); + x4 = _mm_xor_si128(x4, y8); + buf += 64; + len -= 64; + } + x0 = _mm_load_si128((__m128i *)k3k4); + x5 = _mm_clmulepi64_si128(x1, x0, 0x00); + x1 = _mm_clmulepi64_si128(x1, x0, 0x11); + x1 = _mm_xor_si128(x1, x2); + x1 = _mm_xor_si128(x1, x5); + x5 = _mm_clmulepi64_si128(x1, x0, 0x00); + x1 = _mm_clmulepi64_si128(x1, x0, 0x11); + x1 = _mm_xor_si128(x1, x3); + x1 = _mm_xor_si128(x1, x5); + x5 = _mm_clmulepi64_si128(x1, x0, 0x00); + x1 = _mm_clmulepi64_si128(x1, x0, 0x11); + x1 = _mm_xor_si128(x1, x4); + x1 = _mm_xor_si128(x1, x5); + while (len >= 16) { + x2 = _mm_loadu_si128((__m128i *)buf); + x5 = _mm_clmulepi64_si128(x1, x0, 0x00); + x1 = _mm_clmulepi64_si128(x1, x0, 0x11); + x1 = _mm_xor_si128(x1, x2); + x1 = _mm_xor_si128(x1, x5); + buf += 16; + len -= 16; + } + x2 = _mm_clmulepi64_si128(x1, x0, 0x10); + x3 = _mm_setr_epi32(~0, 0, ~0, 0); + x1 = _mm_srli_si128(x1, 8); + x1 = _mm_xor_si128(x1, x2); + x0 = _mm_loadl_epi64((__m128i *)k5k0); + x2 = _mm_srli_si128(x1, 4); + x1 = _mm_and_si128(x1, x3); + x1 = _mm_clmulepi64_si128(x1, x0, 0x00); + x1 = _mm_xor_si128(x1, x2); + x0 = _mm_load_si128((__m128i *)poly); + x2 = _mm_and_si128(x1, x3); + x2 = _mm_clmulepi64_si128(x2, x0, 0x10); + x2 = _mm_and_si128(x2, x3); + x2 = _mm_clmulepi64_si128(x2, x0, 0x00); + x1 = _mm_xor_si128(x1, x2); + crc = _mm_extract_epi32(x1, 1); + } +#endif + static uint32_t tab[256]; + if (!tab[255]) { + // generates table for byte-wise crc calculation on the polynomial + // x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1 + uint32_t polynomial = 0xedb88320; // bits are reversed + for (int d = 0; d < 256; ++d) { + uint32_t r = d; + for (int i = 0; i < 8; ++i) + r = r >> 1 ^ (r & 1 ? polynomial : 0); + tab[d] = r; + } + } + for (size_t i = 0; i < len; ++i) + crc = crc >> 8 ^ tab[(crc & 255) ^ buf[i]]; + return ~crc; +} + +uint32_t crc32_bloated(uint32_t crc, const void *buf, size_t buf_len) { + const uint8_t *ptr = (const uint8_t *)buf; + static const uint32_t s_crc_table[256] = { + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, + 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, + 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, + 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, + 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, + 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, + 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, + 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, + 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, + 0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, + 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106, + 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, + 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, + 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, + 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, + 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, + 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, + 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, + 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, + 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, + 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, + 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, + 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, + 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, + 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, + 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, + 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, + 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, + 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, + 0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, + 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, + 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, + 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, + 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, + 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, + 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, + 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, + 0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, + 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, + 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, + 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, + 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, + 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D}; + uint32_t crc32 = (uint32_t)crc ^ 0xFFFFFFFF; + const uint8_t *pByte_buf = (const uint8_t *)ptr; + while (buf_len >= 4) { + crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[0]) & 0xFF]; + crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[1]) & 0xFF]; + crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[2]) & 0xFF]; + crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[3]) & 0xFF]; + pByte_buf += 4; + buf_len -= 4; + } + while (buf_len) { + crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[0]) & 0xFF]; + ++pByte_buf; + --buf_len; + } + return ~crc32; +} + +TEST(crc32_z, fuzz) { + char buf[512]; + for (int n = 0; n < 512; ++n) { + for (int i = 0; i < n; ++i) + buf[i] = rand(); + for (int i = 0; i < 10; ++i) { + int x = lemur64(); + ASSERT_EQ(crc32_bloated(x, buf, n), crc32_z(x, buf, n)); + ASSERT_EQ(crc32_reference(x, buf, n), crc32_z(x, buf, n)); + ASSERT_EQ(crc32_uber_alles(x, buf, n), crc32_z(x, buf, n)); + } + } +} + TEST(crc32_z, test) { char *p; p = gc(strdup(kHyperion)); @@ -54,7 +382,27 @@ TEST(crc32_z, test) { EXPECT_EQ(0xe9ded8e6, crc32_z(0, p, kHyperionSize)); } +#define BENCHMARK_GBPS(ITERATIONS, BYTES_PER_RUN, CODE) \ + do { \ + struct timespec start = timespec_real(); \ + for (int i = 0; i < ITERATIONS; ++i) { \ + CODE; \ + } \ + long bytes = BYTES_PER_RUN * ITERATIONS; \ + struct timespec elapsed = timespec_sub(timespec_real(), start); \ + long nanos_elapsed = timespec_tonanos(elapsed); \ + double seconds_elapsed = nanos_elapsed * 1e-9; \ + double bytes_per_second = bytes / seconds_elapsed; \ + double gib_per_second = bytes_per_second / (1024 * 1024 * 1024); \ + printf("%12g GiB/s %s\n", gib_per_second, #CODE); \ + } while (0) + BENCH(crc32_z, bench) { - EZBENCH_N("crc32_z", kHyperionSize, crc32_z(0, kHyperion, kHyperionSize)); - EZBENCH_N("crc32_z", kHyperionSize, crc32_z(0, kHyperion, kHyperionSize)); + volatile unsigned vv = 0; + BENCHMARK_GBPS(100, kHyperionSize, + vv += crc32_z(0, kHyperion, kHyperionSize)); + BENCHMARK_GBPS(100, kHyperionSize, + vv += crc32_bloated(0, kHyperion, kHyperionSize)); + BENCHMARK_GBPS(100, kHyperionSize, + vv += crc32_uber_alles(0, kHyperion, kHyperionSize)); } 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/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/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_atfork_test.c b/test/libc/thread/pthread_atfork_test.c index 06b87cded..dc977b9aa 100644 --- a/test/libc/thread/pthread_atfork_test.c +++ b/test/libc/thread/pthread_atfork_test.c @@ -19,7 +19,6 @@ #include "libc/calls/calls.h" #include "libc/dce.h" #include "libc/mem/gc.h" -#include "libc/mem/gc.h" #include "libc/mem/mem.h" #include "libc/runtime/internal.h" #include "libc/runtime/runtime.h" 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_create_test.c b/test/libc/thread/pthread_create_test.c index bb6c974bb..ad680cd10 100644 --- a/test/libc/thread/pthread_create_test.c +++ b/test/libc/thread/pthread_create_test.c @@ -29,7 +29,6 @@ #include "libc/limits.h" #include "libc/macros.internal.h" #include "libc/mem/gc.h" -#include "libc/mem/gc.h" #include "libc/mem/mem.h" #include "libc/nexgen32e/nexgen32e.h" #include "libc/nexgen32e/vendor.internal.h" @@ -48,7 +47,7 @@ #include "libc/thread/thread.h" #include "libc/thread/thread2.h" -void OnUsr1(int sig, struct siginfo *si, void *vctx) { +void OnUsr1(int sig, siginfo_t *si, void *vctx) { } void SetUp(void) { diff --git a/test/libc/thread/pthread_detach_test.c b/test/libc/thread/pthread_detach_test.c index 59ce21c58..bfbb9c9c5 100644 --- a/test/libc/thread/pthread_detach_test.c +++ b/test/libc/thread/pthread_detach_test.c @@ -26,7 +26,7 @@ #include "libc/thread/posixthread.internal.h" #include "libc/thread/thread.h" -void OnUsr1(int sig, struct siginfo *si, void *vctx) { +void OnUsr1(int sig, siginfo_t *si, void *vctx) { } void SetUp(void) { 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_rwlock_rdlock_test.c b/test/libc/thread/pthread_rwlock_rdlock_test.c index 9c7b8c165..e7ad11cc3 100644 --- a/test/libc/thread/pthread_rwlock_rdlock_test.c +++ b/test/libc/thread/pthread_rwlock_rdlock_test.c @@ -18,7 +18,6 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/atomic.h" #include "libc/mem/gc.h" -#include "libc/mem/gc.h" #include "libc/mem/mem.h" #include "libc/testlib/testlib.h" #include "libc/thread/thread.h" 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/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/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/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/libc/tinymath/measureentropy_test.c b/test/libc/tinymath/measureentropy_test.c index 75389c14f..0c9ec1a96 100644 --- a/test/libc/tinymath/measureentropy_test.c +++ b/test/libc/tinymath/measureentropy_test.c @@ -17,8 +17,8 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/math.h" -#include "libc/stdio/rand.h" #include "libc/mem/gc.h" +#include "libc/stdio/rand.h" #include "libc/testlib/ezbench.h" #include "libc/testlib/hyperion.h" #include "libc/testlib/testlib.h" diff --git a/test/libc/x/utf16to8_test.c b/test/libc/x/utf16to8_test.c index fc7196566..e359df03f 100644 --- a/test/libc/x/utf16to8_test.c +++ b/test/libc/x/utf16to8_test.c @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/mem/mem.h" #include "libc/mem/gc.h" +#include "libc/mem/mem.h" #include "libc/testlib/ezbench.h" #include "libc/testlib/hyperion.h" #include "libc/testlib/testlib.h" diff --git a/test/libc/x/utf8to16_test.c b/test/libc/x/utf8to16_test.c index ce3c21072..cdd3d99d1 100644 --- a/test/libc/x/utf8to16_test.c +++ b/test/libc/x/utf8to16_test.c @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/mem/mem.h" #include "libc/mem/gc.h" +#include "libc/mem/mem.h" #include "libc/testlib/ezbench.h" #include "libc/testlib/hyperion.h" #include "libc/testlib/testlib.h" diff --git a/test/libc/x/utf8to32_test.c b/test/libc/x/utf8to32_test.c index 9cdfa2647..cf17662bb 100644 --- a/test/libc/x/utf8to32_test.c +++ b/test/libc/x/utf8to32_test.c @@ -16,9 +16,9 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/mem/gc.h" #include "libc/mem/mem.h" #include "libc/mem/shuffle.internal.h" -#include "libc/mem/gc.h" #include "libc/stdio/rand.h" #include "libc/testlib/ezbench.h" #include "libc/testlib/hyperion.h" @@ -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/BUILD.mk b/test/libcxx/BUILD.mk index 1e1ca15ae..1bfec308e 100644 --- a/test/libcxx/BUILD.mk +++ b/test/libcxx/BUILD.mk @@ -15,6 +15,7 @@ TEST_LIBCXX_DIRECTDEPS = \ LIBC_CALLS \ LIBC_INTRIN \ LIBC_LOG \ + LIBC_MEM \ LIBC_NEXGEN32E \ LIBC_RUNTIME \ LIBC_STDIO \ @@ -22,6 +23,8 @@ TEST_LIBCXX_DIRECTDEPS = \ LIBC_THREAD \ LIBC_TINYMATH \ THIRD_PARTY_LIBCXX \ + THIRD_PARTY_LIBCXXABI \ + THIRD_PARTY_LIBUNWIND \ THIRD_PARTY_OPENMP TEST_LIBCXX_DEPS := \ @@ -39,7 +42,7 @@ o/$(MODE)/test/libcxx/%.dbg: \ $(APE_NO_MODIFY_SELF) @$(APELINK) -$(TEST_LIBCXX_OBJS): private CCFLAGS += -fexceptions -frtti +$(TEST_LIBCXX_OBJS): private OVERRIDE_CXXFLAGS += -fexceptions -frtti o/$(MODE)/test/libcxx/openmp_test.o: private CXXFLAGS += -fopenmp o/$(MODE)/test/libcxx/openmp_test.runs: private QUOTA += -C100 diff --git a/test/libcxx/cexception_test.cc b/test/libcxx/cexception_test.cc new file mode 100644 index 000000000..358dda421 --- /dev/null +++ b/test/libcxx/cexception_test.cc @@ -0,0 +1,80 @@ +/*-*-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 "libc/mem/alg.h" +#include "libc/mem/mem.h" +#include "libc/runtime/runtime.h" + +// this dontthrow keyword SHOULD break this test. it's probably passing +// because we're currently using SjLj exceptions. the day we can change +// things, remove `dontthrow` and this test will still be a useful help +extern "C" dontthrow void qsort_(void *, size_t, size_t, + int (*)(const void *, + const void *)) asm("qsort"); + +struct Resource { + char *p; + Resource() { + p = new char; + } + ~Resource() { + delete p; + } +}; + +void Poke(char *p) { + *p = 1; +} +void (*pPoke)(char *) = Poke; + +void Throw(void) { + throw 42; +} +void (*pThrow)(void) = Throw; + +int cmp(const void *x, const void *y) { + Resource r; + pPoke(r.p); + if (*r.p) + pThrow(); + exit(5); +} + +int A[3] = {3, 2, 1}; +int Work(void) { + Resource r; + pPoke(r.p); + qsort_(A, 3, sizeof(int), cmp); + return A[0]; +} +int (*pWork)(void) = Work; + +int main(int argc, char *argv[]) { + try { + Resource r; + if (pWork() != 1) + return 1; + pPoke(r.p); + if (r.p) + return 2; + } catch (int e) { + if (e != 42) + return 3; + } + CheckForMemoryLeaks(); +} diff --git a/test/libcxx/openmp_test.cc b/test/libcxx/openmp_test.cc deleted file mode 100644 index ecea814ea..000000000 --- a/test/libcxx/openmp_test.cc +++ /dev/null @@ -1,466 +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 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/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/test/math/BUILD.mk b/test/math/BUILD.mk index 188697014..956672e9c 100644 --- a/test/math/BUILD.mk +++ b/test/math/BUILD.mk @@ -13,10 +13,12 @@ TEST_MATH_CHECKS = $(TEST_MATH_SRCS_TEST:%.c=o/$(MODE)/%.runs) TEST_MATH_DIRECTDEPS = \ LIBC_INTRIN \ + LIBC_MEM \ 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 +35,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); + } +} 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/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/decodelatin1_test.c b/test/net/http/decodelatin1_test.c index e2a40c909..822c7d215 100644 --- a/test/net/http/decodelatin1_test.c +++ b/test/net/http/decodelatin1_test.c @@ -17,8 +17,8 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/errno.h" -#include "libc/mem/mem.h" #include "libc/mem/gc.h" +#include "libc/mem/mem.h" #include "libc/str/str.h" #include "libc/testlib/ezbench.h" #include "libc/testlib/hyperion.h" @@ -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/encodehttpheadervalue_test.c b/test/net/http/encodehttpheadervalue_test.c index faa1c40d5..2100c3779 100644 --- a/test/net/http/encodehttpheadervalue_test.c +++ b/test/net/http/encodehttpheadervalue_test.c @@ -17,8 +17,8 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/errno.h" -#include "libc/mem/mem.h" #include "libc/mem/gc.h" +#include "libc/mem/mem.h" #include "libc/stdio/stdio.h" #include "libc/str/str.h" #include "libc/testlib/ezbench.h" diff --git a/test/net/http/escapehtml_test.c b/test/net/http/escapehtml_test.c index 95cf2729e..7eebca47c 100644 --- a/test/net/http/escapehtml_test.c +++ b/test/net/http/escapehtml_test.c @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/mem/mem.h" #include "libc/mem/gc.h" +#include "libc/mem/mem.h" #include "libc/str/str.h" #include "libc/testlib/ezbench.h" #include "libc/testlib/hyperion.h" diff --git a/test/net/http/escapejsstringliteral_test.c b/test/net/http/escapejsstringliteral_test.c index c71718b77..865738262 100644 --- a/test/net/http/escapejsstringliteral_test.c +++ b/test/net/http/escapejsstringliteral_test.c @@ -18,11 +18,11 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/calls/calls.h" #include "libc/log/check.h" -#include "libc/mem/mem.h" #include "libc/mem/gc.h" +#include "libc/mem/mem.h" #include "libc/stdio/stdio.h" -#include "libc/temp.h" #include "libc/str/str.h" +#include "libc/temp.h" #include "libc/testlib/ezbench.h" #include "libc/testlib/hyperion.h" #include "libc/testlib/testlib.h" diff --git a/test/net/http/escapeurlparam_test.c b/test/net/http/escapeurlparam_test.c index c6fffedb7..1d914740d 100644 --- a/test/net/http/escapeurlparam_test.c +++ b/test/net/http/escapeurlparam_test.c @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/mem/mem.h" #include "libc/mem/gc.h" +#include "libc/mem/mem.h" #include "libc/str/str.h" #include "libc/testlib/ezbench.h" #include "libc/testlib/hyperion.h" 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/indentlines_test.c b/test/net/http/indentlines_test.c index 79599d678..e8f9ce5c9 100644 --- a/test/net/http/indentlines_test.c +++ b/test/net/http/indentlines_test.c @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/mem/mem.h" #include "libc/mem/gc.h" +#include "libc/mem/mem.h" #include "libc/str/str.h" #include "libc/testlib/ezbench.h" #include "libc/testlib/hyperion.h" 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/http/parsehttpmessage_test.c b/test/net/http/parsehttpmessage_test.c index 8a308a150..5a8412614 100644 --- a/test/net/http/parsehttpmessage_test.c +++ b/test/net/http/parsehttpmessage_test.c @@ -62,18 +62,23 @@ TEST(ParseHttpMessage, soLittleState) { TEST(ParseHttpMessage, testEmpty_tooShort) { InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(0, ParseHttpMessage(req, "", 0)); + EXPECT_EQ(0, ParseHttpMessage(req, "", 0, 1)); } -TEST(ParseHttpMessage, testTooShort) { +TEST(ParseHttpMessage, testShort) { InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(0, ParseHttpMessage(req, "\r\n", 2)); + EXPECT_EQ(0, ParseHttpMessage(req, "HT", 2, 32768)); +} + +TEST(ParseHttpMessage, testBusted) { + InitHttpMessage(req, kHttpRequest); + EXPECT_SYS(EBADMSG, -1, ParseHttpMessage(req, "\r\n", 2, 2)); } TEST(ParseHttpMessage, testNoHeaders) { static const char m[] = "GET /foo HTTP/1.0\r\n\r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_STREQ("GET", method()); EXPECT_STREQ("/foo", gc(slice(m, req->uri))); EXPECT_EQ(10, req->version); @@ -86,7 +91,7 @@ Host: foo.example\r\n\ Content-Length: 0\r\n\ \r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_STREQ("POST", method()); EXPECT_STREQ("/foo?bar%20hi", gc(slice(m, req->uri))); EXPECT_EQ(10, req->version); @@ -98,7 +103,7 @@ Content-Length: 0\r\n\ TEST(ParseHttpMessage, testHttp101) { static const char m[] = "GET / HTTP/1.1\r\n\r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_STREQ("GET", method()); EXPECT_STREQ("/", gc(slice(m, req->uri))); EXPECT_EQ(11, req->version); @@ -107,7 +112,7 @@ TEST(ParseHttpMessage, testHttp101) { TEST(ParseHttpMessage, testHttp100) { static const char m[] = "GET / HTTP/1.0\r\n\r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_STREQ("GET", method()); EXPECT_STREQ("/", gc(slice(m, req->uri))); EXPECT_EQ(10, req->version); @@ -116,40 +121,40 @@ TEST(ParseHttpMessage, testHttp100) { TEST(ParseHttpMessage, testUnknownMethod_canBeUsedIfYouWant) { static const char m[] = "#%*+_^ / HTTP/1.0\r\n\r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_STREQ("#%*+_^", method()); } TEST(ParseHttpMessage, testIllegalMethod) { static const char m[] = "ehd@oruc / HTTP/1.0\r\n\r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(-1, ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(-1, ParseHttpMessage(req, m, strlen(m), strlen(m))); } TEST(ParseHttpMessage, testIllegalMethodCasing_weUpperCaseIt) { static const char m[] = "get / HTTP/1.0\r\n\r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_STREQ("GET", method()); } TEST(ParseHttpMessage, testEmptyMethod_isntAllowed) { static const char m[] = " / HTTP/1.0\r\n\r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(-1, ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(-1, ParseHttpMessage(req, m, strlen(m), strlen(m))); } TEST(ParseHttpMessage, testEmptyUri_isntAllowed) { static const char m[] = "GET HTTP/1.0\r\n\r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(-1, ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(-1, ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_STREQ("GET", method()); } TEST(ParseHttpMessage, testHttp09) { static const char m[] = "GET /\r\n\r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_STREQ("GET", method()); EXPECT_STREQ("/", gc(slice(m, req->uri))); EXPECT_EQ(9, req->version); @@ -158,7 +163,7 @@ TEST(ParseHttpMessage, testHttp09) { TEST(ParseHttpMessage, testTinyResponse) { static const char m[] = "HTTP/1.1 429 \r\n\r\n"; InitHttpMessage(req, kHttpResponse); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_EQ(429, req->status); EXPECT_STREQ("", gc(slice(m, req->message))); } @@ -170,7 +175,7 @@ GET /foo?bar%20hi HTTP/1.0\r\n\ User-Agent: hi\r\n\ \r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_STREQ("/foo?bar%20hi", gc(slice(m, req->uri))); } @@ -181,7 +186,7 @@ User-Agent: hi\r\n\ there\r\n\ \r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(-1, ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(-1, ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_EQ(EBADMSG, errno); } @@ -192,7 +197,7 @@ User-Agent: hi\r\n\ : hi\r\n\ \r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(-1, ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(-1, ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_EQ(EBADMSG, errno); } @@ -204,7 +209,7 @@ Content-Length: 0\n\ \n\ \n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m) - 1, ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m) - 1, ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_STREQ("POST", method()); EXPECT_STREQ("/foo?bar%20hi", gc(slice(m, req->uri))); EXPECT_EQ(10, req->version); @@ -226,7 +231,7 @@ Accept-Encoding: gzip, deflate\r\n\ Accept-Language: en-US,en;q=0.9\r\n\ \r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_STREQ("GET", method()); EXPECT_STREQ("/tool/net/redbean.png", gc(slice(m, req->uri))); EXPECT_EQ(11, req->version); @@ -243,7 +248,7 @@ GET /foo?bar%20hi HTTP/1.0\r\n\ X-User-Agent: hi\r\n\ \r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); ASSERT_EQ(1, req->xheaders.n); EXPECT_STREQ("X-User-Agent", gc(slice(m, req->xheaders.p[0].k))); EXPECT_STREQ("hi", gc(slice(m, req->xheaders.p[0].v))); @@ -256,7 +261,7 @@ Content-Type: text/html\r\n\ Content-Type: text/plain\r\n\ \r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_STREQ("text/plain", gc(slice(m, req->headers[kHttpContentType]))); ASSERT_EQ(0, req->xheaders.n); } @@ -271,7 +276,7 @@ Accept: text/xml\r\n\ Accept: text/css\r\n\ \r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_STREQ("text/html", gc(slice(m, req->headers[kHttpAccept]))); ASSERT_EQ(4, req->xheaders.n); EXPECT_STREQ("Accept", gc(slice(m, req->xheaders.p[0].k))); @@ -291,7 +296,7 @@ Accept: text/html\r\n\ Accept: text/plain\r\n\ \r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_STREQ("text/html", gc(slice(m, req->headers[kHttpAccept]))); ASSERT_EQ(1, req->xheaders.n); EXPECT_STREQ("Accept", gc(slice(m, req->xheaders.p[0].k))); @@ -306,7 +311,7 @@ ACCEPT-ENCODING: gzip\r\n\ ACCEPT-encoding: bzip2\r\n\ \r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_TRUE(HeaderHas(req, m, kHttpAcceptEncoding, "gzip", -1)); EXPECT_TRUE(HeaderHas(req, m, kHttpAcceptEncoding, "deflate", -1)); EXPECT_FALSE(HeaderHas(req, m, kHttpAcceptEncoding, "funzip", -1)); @@ -318,7 +323,7 @@ GET / HTTP/1.1\r\n\ : boop\r\n\ \r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(-1, ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(-1, ParseHttpMessage(req, m, strlen(m), strlen(m))); } TEST(HeaderHas, testHeaderOnSameLIne) { @@ -327,7 +332,7 @@ GET / HTTP/1.1\r\n\ Accept-Encoding: deflate, gzip, bzip2\r\n\ \r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_TRUE(HeaderHas(req, m, kHttpAcceptEncoding, "gzip", -1)); EXPECT_TRUE(HeaderHas(req, m, kHttpAcceptEncoding, "deflate", -1)); EXPECT_FALSE(HeaderHas(req, m, kHttpAcceptEncoding, "funzip", -1)); @@ -339,7 +344,7 @@ OPTIONS * HTTP/1.0\r\n\ User-Agent: \t hi there \t \r\n\ \r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_STREQ("hi there", gc(slice(m, req->headers[kHttpUserAgent]))); EXPECT_STREQ("*", gc(slice(m, req->uri))); } @@ -349,7 +354,7 @@ TEST(ParseHttpMessage, testAbsentHost_setsSliceToZero) { GET / HTTP/1.1\r\n\ \r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_EQ(0, req->headers[kHttpHost].a); EXPECT_EQ(0, req->headers[kHttpHost].b); } @@ -360,7 +365,7 @@ GET / HTTP/1.1\r\n\ Host:\r\n\ \r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_NE(0, req->headers[kHttpHost].a); EXPECT_EQ(req->headers[kHttpHost].a, req->headers[kHttpHost].b); } @@ -371,25 +376,25 @@ GET / HTTP/1.1\r\n\ Host: \r\n\ \r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_NE(0, req->headers[kHttpHost].a); EXPECT_EQ(req->headers[kHttpHost].a, req->headers[kHttpHost].b); } TEST(ParseHttpResponse, testEmpty_tooShort) { InitHttpMessage(req, kHttpResponse); - EXPECT_EQ(0, ParseHttpMessage(req, "", 0)); + EXPECT_EQ(0, ParseHttpMessage(req, "", 0, 32768)); } TEST(ParseHttpResponse, testTooShort) { InitHttpMessage(req, kHttpResponse); - EXPECT_EQ(0, ParseHttpMessage(req, "\r\n", 2)); + EXPECT_EQ(0, ParseHttpMessage(req, "HT", 2, 32768)); } TEST(ParseHttpResponse, testNoHeaders) { static const char m[] = "HTTP/1.0 200 OK\r\n\r\n"; InitHttpMessage(req, kHttpResponse); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_EQ(200, req->status); EXPECT_STREQ("OK", gc(slice(m, req->message))); EXPECT_EQ(10, req->version); @@ -402,7 +407,7 @@ Host: foo.example\r\n\ Content-Length: 0\r\n\ \r\n"; InitHttpMessage(req, kHttpResponse); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_EQ(200, req->status); EXPECT_STREQ("OK", gc(slice(m, req->message))); EXPECT_EQ(10, req->version); @@ -414,7 +419,7 @@ Content-Length: 0\r\n\ TEST(ParseHttpResponse, testHttp101) { static const char m[] = "HTTP/1.1 300 OMG\r\n\r\n"; InitHttpMessage(req, kHttpResponse); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_EQ(300, req->status); EXPECT_STREQ("OMG", gc(slice(m, req->message))); EXPECT_EQ(11, req->version); @@ -423,7 +428,7 @@ TEST(ParseHttpResponse, testHttp101) { TEST(ParseHttpResponse, testHttp100) { static const char m[] = "HTTP/1.0 404 Not Found\r\n\r\n"; InitHttpMessage(req, kHttpResponse); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EXPECT_EQ(404, req->status); EXPECT_STREQ("Not Found", gc(slice(m, req->message))); EXPECT_EQ(10, req->version); @@ -433,9 +438,8 @@ void DoTiniestHttpRequest(void) { static const char m[] = "\ GET /\r\n\ \r\n"; - InitHttpMessage(req, kHttpRequest); - ParseHttpMessage(req, m, sizeof(m)); - DestroyHttpMessage(req); + ResetHttpMessage(req, kHttpRequest); + ParseHttpMessage(req, m, sizeof(m) - 1, sizeof(m)); } void DoTinyHttpRequest(void) { @@ -443,9 +447,8 @@ void DoTinyHttpRequest(void) { GET /\r\n\ Accept-Encoding: gzip\r\n\ \r\n"; - InitHttpMessage(req, kHttpRequest); - ParseHttpMessage(req, m, sizeof(m)); - DestroyHttpMessage(req); + ResetHttpMessage(req, kHttpRequest); + ParseHttpMessage(req, m, sizeof(m) - 1, sizeof(m)); } void DoStandardChromeRequest(void) { @@ -460,9 +463,8 @@ Referer: http://10.10.10.124:8080/\r\n\ Accept-Encoding: gzip, deflate\r\n\ Accept-Language: en-US,en;q=0.9\r\n\ \r\n"; - InitHttpMessage(req, kHttpRequest); - CHECK_EQ(sizeof(m) - 1, ParseHttpMessage(req, m, sizeof(m))); - DestroyHttpMessage(req); + ResetHttpMessage(req, kHttpRequest); + CHECK_EQ(sizeof(m) - 1, ParseHttpMessage(req, m, sizeof(m) - 1, sizeof(m))); } void DoUnstandardChromeRequest(void) { @@ -477,18 +479,16 @@ X-Referer: http://10.10.10.124:8080/\r\n\ X-Accept-Encoding: gzip, deflate\r\n\ X-Accept-Language: en-US,en;q=0.9\r\n\ \r\n"; - InitHttpMessage(req, kHttpRequest); - CHECK_EQ(sizeof(m) - 1, ParseHttpMessage(req, m, sizeof(m))); - DestroyHttpMessage(req); + ResetHttpMessage(req, kHttpRequest); + CHECK_EQ(sizeof(m) - 1, ParseHttpMessage(req, m, sizeof(m) - 1, sizeof(m))); } void DoTiniestHttpResponse(void) { static const char m[] = "\ HTTP/1.0 200\r\n\ \r\n"; - InitHttpMessage(req, kHttpResponse); - ParseHttpMessage(req, m, sizeof(m)); - DestroyHttpMessage(req); + ResetHttpMessage(req, kHttpResponse); + ParseHttpMessage(req, m, sizeof(m) - 1, sizeof(m)); } void DoTinyHttpResponse(void) { @@ -496,9 +496,8 @@ void DoTinyHttpResponse(void) { HTTP/1.0 200\r\n\ Accept-Encoding: gzip\r\n\ \r\n"; - InitHttpMessage(req, kHttpResponse); - ParseHttpMessage(req, m, sizeof(m)); - DestroyHttpMessage(req); + ResetHttpMessage(req, kHttpResponse); + ParseHttpMessage(req, m, sizeof(m) - 1, sizeof(m)); } void DoStandardHttpResponse(void) { @@ -518,9 +517,8 @@ Referrer-Policy: origin\r\n\ Strict-Transport-Security: max-age=31556900\r\n\ Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' https://www.google.com/recaptcha/ https://www.gstatic.com/recaptcha/ https://cdnjs.cloudflare.com/; frame-src 'self' https://www.google.com/recaptcha/; style-src 'self' 'unsafe-inline'\r\n\ \r\n"; - InitHttpMessage(req, kHttpResponse); - CHECK_EQ(sizeof(m) - 1, ParseHttpMessage(req, m, sizeof(m))); - DestroyHttpMessage(req); + ResetHttpMessage(req, kHttpResponse); + CHECK_EQ(sizeof(m) - 1, ParseHttpMessage(req, m, sizeof(m) - 1, sizeof(m))); } void DoUnstandardHttpResponse(void) { @@ -545,12 +543,12 @@ x-slack-shared-secret-outcome: shared-secret\r\n\ via: envoy-www-iad-qd3r\r\n\ transfer-encoding: chunked\r\n\ \r\n"; - InitHttpMessage(req, kHttpResponse); - CHECK_EQ(sizeof(m) - 1, ParseHttpMessage(req, m, sizeof(m))); - DestroyHttpMessage(req); + ResetHttpMessage(req, kHttpResponse); + CHECK_EQ(sizeof(m) - 1, ParseHttpMessage(req, m, sizeof(m) - 1, sizeof(m))); } BENCH(ParseHttpMessage, bench) { + InitHttpMessage(req, kHttpRequest); EZBENCH2("DoTiniestHttpReque", donothing, DoTiniestHttpRequest()); EZBENCH2("DoTinyHttpRequest", donothing, DoTinyHttpRequest()); EZBENCH2("DoStandardChromeRe", donothing, DoStandardChromeRequest()); @@ -559,6 +557,7 @@ BENCH(ParseHttpMessage, bench) { EZBENCH2("DoTinyHttpResponse", donothing, DoTinyHttpResponse()); EZBENCH2("DoStandardHttpResp", donothing, DoStandardHttpResponse()); EZBENCH2("DoUnstandardHttpRe", donothing, DoUnstandardHttpResponse()); + DestroyHttpMessage(req); } BENCH(HeaderHas, bench) { @@ -572,7 +571,7 @@ ACCEPT-ENCODING: gzip\r\n\ ACCEPT-encoding: bzip2\r\n\ \r\n"; InitHttpMessage(req, kHttpRequest); - EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m))); + EXPECT_EQ(strlen(m), ParseHttpMessage(req, m, strlen(m), strlen(m))); EZBENCH2("HeaderHas txt/pln", donothing, HeaderHas(req, m, kHttpAccept, "text/plain", 7)); EZBENCH2("HeaderHas deflate", donothing, diff --git a/test/net/http/tokenbucket_test.c b/test/net/http/tokenbucket_test.c index 749ccd5b9..160c55058 100644 --- a/test/net/http/tokenbucket_test.c +++ b/test/net/http/tokenbucket_test.c @@ -16,6 +16,7 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ +#include "net/http/tokenbucket.h" #include "libc/assert.h" #include "libc/atomic.h" #include "libc/calls/struct/timespec.h" @@ -28,7 +29,6 @@ #include "libc/testlib/ezbench.h" #include "libc/testlib/testlib.h" #include "net/http/http.h" -#include "net/http/tokenbucket.h" #define TB_CIDR 22 #define TB_BYTES (1u << TB_CIDR) @@ -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/http/underlong_test.c b/test/net/http/underlong_test.c index 246aafe97..a9fbc5c41 100644 --- a/test/net/http/underlong_test.c +++ b/test/net/http/underlong_test.c @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/mem/mem.h" #include "libc/mem/gc.h" +#include "libc/mem/mem.h" #include "libc/testlib/ezbench.h" #include "libc/testlib/hyperion.h" #include "libc/testlib/testlib.h" 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/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/BUILD.mk b/test/posix/BUILD.mk index ba418c314..dafa1d9c1 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 @@ -51,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/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/fread3gb_test.c b/test/posix/fread3gb_test.c new file mode 100644 index 000000000..6df4a3cf4 --- /dev/null +++ b/test/posix/fread3gb_test.c @@ -0,0 +1,82 @@ +#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, "b", 1, 0x7fffefff) != 1) + return 4; + 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; +} + +int test(void) { + FILE *f; + char *buf; + size_t rc; + if (!(f = fopen(path, "r"))) + return 8; + if (!(buf = malloc(SIZE))) + return 9; + if ((rc = fread(buf, SIZE, 1, f)) != 1) + return 10; + 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; +} + +int main(int argc, char *argv[]) { + + // makes testing fleet go too slow + if (1) + return 0; + + int rc; + if ((rc = setup())) { + perror(path); + teardown(); + return rc; + } + rc = test(); + teardown(); + return rc; +} 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/args/args_test.c b/test/tool/args/args_test.c index 4ddcd3088..ec57b1044 100644 --- a/test/tool/args/args_test.c +++ b/test/tool/args/args_test.c @@ -16,10 +16,10 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ +#include "tool/args/args.h" #include "libc/mem/mem.h" #include "libc/runtime/runtime.h" #include "libc/testlib/testlib.h" -#include "tool/args/args.h" void FreeZipArgs(void); int LoadZipArgsImpl(int *, char ***, char *); 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/build/lib/interner_test.c b/test/tool/build/lib/interner_test.c index 23d2966fe..b26709ae7 100644 --- a/test/tool/build/lib/interner_test.c +++ b/test/tool/build/lib/interner_test.c @@ -16,15 +16,15 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/mem/mem.h" +#include "tool/build/lib/interner.h" #include "libc/mem/gc.h" +#include "libc/mem/mem.h" #include "libc/stdio/stdio.h" #include "libc/str/str.h" #include "libc/testlib/ezbench.h" #include "libc/testlib/fastrandomstring.h" #include "libc/testlib/hyperion.h" #include "libc/testlib/testlib.h" -#include "tool/build/lib/interner.h" TEST(interner, test) { struct Interner *t = defer(freeinterner, newinterner()); diff --git a/test/tool/build/lib/stripcomponents_test.c b/test/tool/build/lib/stripcomponents_test.c index 875f6858f..0809fdd23 100644 --- a/test/tool/build/lib/stripcomponents_test.c +++ b/test/tool/build/lib/stripcomponents_test.c @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/testlib/testlib.h" #include "tool/build/lib/stripcomponents.h" +#include "libc/testlib/testlib.h" TEST(StripComponents, test) { EXPECT_STREQ("", StripComponents("", 0)); diff --git a/test/tool/net/encodejson_test.lua b/test/tool/net/encodejson_test.lua index edd97df91..02f464275 100644 --- a/test/tool/net/encodejson_test.lua +++ b/test/tool/net/encodejson_test.lua @@ -22,7 +22,7 @@ assert(EncodeJson(0) == "0") assert(EncodeJson(0.0) == "0") assert(EncodeJson(3.14) == "3.14") assert(EncodeJson(0/0) == "null") -assert(EncodeJson(math.huge) == "null") +assert(EncodeJson(math.huge) == "1e5000") assert(EncodeJson(123.456e-789) == '0') assert(EncodeJson(9223372036854775807) == '9223372036854775807') assert(EncodeJson(-9223372036854775807 - 1) == '-9223372036854775808') diff --git a/test/tool/net/jsontestsuite_okay_test.lua b/test/tool/net/jsontestsuite_okay_test.lua index cbcc465c7..119a80ad2 100644 --- a/test/tool/net/jsontestsuite_okay_test.lua +++ b/test/tool/net/jsontestsuite_okay_test.lua @@ -176,30 +176,25 @@ assert(DecodeJson(' [123e-10000000] ')) assert(EncodeJson(DecodeJson(' [123e-10000000] ')) == '[0]') assert(EncodeLua(DecodeJson(' [123e-10000000] ')) == '{0.}') --- [jart] consistent with v8 we encode Infinity as null (wut?) -- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/i_number_real_pos_overflow.json assert(DecodeJson(' [123123e100000] ')) -assert(EncodeJson(DecodeJson(' [123123e100000] ')) == '[null]') +assert(EncodeJson(DecodeJson(' [123123e100000] ')) == '[1e5000]') --- [jart] consistent with v8 we encode -Infinity as null (wut?) -- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/i_number_real_neg_overflow.json assert(DecodeJson(' [-123123e100000] ')) -assert(EncodeJson(DecodeJson(' [-123123e100000] ')) == '[null]') +assert(EncodeJson(DecodeJson(' [-123123e100000] ')) == '[-1e5000]') --- [jart] consistent with v8 we encode Infinity as null (wut?) -- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/i_number_pos_double_huge_exp.json assert(DecodeJson(' [1.5e+9999] ')) -assert(EncodeJson(DecodeJson(' [1.5e+9999] ')) == '[null]') +assert(EncodeJson(DecodeJson(' [1.5e+9999] ')) == '[1e5000]') --- [jart] consistent with v8 we encode -Infinity as null (wut?) -- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/i_number_neg_int_huge_exp.json assert(DecodeJson(' [-1e+9999] ')) -assert(EncodeJson(DecodeJson(' [-1e+9999] ')) == '[null]') +assert(EncodeJson(DecodeJson(' [-1e+9999] ')) == '[-1e5000]') --- [jart] consistent with v8 we encode Infinity as null (wut?) -- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/i_number_huge_exp.json assert(DecodeJson(' [0.4e00669999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999969999999006] ')) -assert(EncodeJson(DecodeJson(' [0.4e00669999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999969999999006] ')) == '[null]') +assert(EncodeJson(DecodeJson(' [0.4e00669999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999969999999006] ')) == '[1e5000]') -- [jart] consistent with v8 we encode underflow as 0 -- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/i_number_double_huge_neg_exp.json 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/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/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/fun_test.c b/test/tool/viz/lib/fun_test.c index 64fbcffb2..dc5340631 100644 --- a/test/tool/viz/lib/fun_test.c +++ b/test/tool/viz/lib/fun_test.c @@ -18,8 +18,8 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/log/check.h" #include "libc/macros.internal.h" -#include "libc/stdio/rand.h" #include "libc/mem/gc.h" +#include "libc/stdio/rand.h" #include "libc/str/str.h" #include "libc/testlib/ezbench.h" #include "libc/testlib/testlib.h" @@ -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/test/tool/viz/lib/halfblit_test.c b/test/tool/viz/lib/halfblit_test.c index c0689c80a..20230e91d 100644 --- a/test/tool/viz/lib/halfblit_test.c +++ b/test/tool/viz/lib/halfblit_test.c @@ -16,11 +16,11 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ +#include "tool/viz/lib/halfblit.h" #include "libc/fmt/bing.internal.h" #include "libc/mem/gc.h" #include "libc/testlib/testlib.h" #include "libc/x/x.h" -#include "tool/viz/lib/halfblit.h" TEST(halfblit, test_4x4_to_2x2) { EXPECT_BINEQ(u" ☺" 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/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/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/chibicc/test/BUILD.mk b/third_party/chibicc/test/BUILD.mk index f5a47118f..08b572834 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 @@ -19,13 +20,13 @@ 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) 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) \ @@ -54,27 +55,30 @@ 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 $< endif +endif .PHONY: o/$(MODE)/third_party/chibicc/test o/$(MODE)/third_party/chibicc/test: \ diff --git a/third_party/compiler_rt/BUILD.mk b/third_party/compiler_rt/BUILD.mk index dc933ee62..1bf28577c 100644 --- a/third_party/compiler_rt/BUILD.mk +++ b/third_party/compiler_rt/BUILD.mk @@ -46,7 +46,8 @@ $(THIRD_PARTY_COMPILER_RT_A).pkg: \ $(THIRD_PARTY_COMPILER_RT_A_OBJS): private \ DEFAULT_CFLAGS += \ $(OLD_CODE) \ - -DCRT_HAS_128BIT + -DCRT_HAS_128BIT \ + -fno-sanitize=address # these assembly files are safe to build on aarch64 o/$(MODE)/third_party/compiler_rt/comprt.o: third_party/compiler_rt/comprt.S 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/dlmalloc/README.cosmo b/third_party/dlmalloc/README.cosmo index 35e1de921..6948927a6 100644 --- a/third_party/dlmalloc/README.cosmo +++ b/third_party/dlmalloc/README.cosmo @@ -9,6 +9,7 @@ LICENSE LOCAL CHANGES + - Use thread-local freelist from cosmo tib - Use faster two power roundup for memalign() - Poison maps to integrate with Address Sanitizer - Introduce __oom_hook() by using _mapanon() vs. mmap() diff --git a/third_party/dlmalloc/dlmalloc.c b/third_party/dlmalloc/dlmalloc.c index d13bff0d9..81c00116a 100644 --- a/third_party/dlmalloc/dlmalloc.c +++ b/third_party/dlmalloc/dlmalloc.c @@ -23,27 +23,32 @@ #include "libc/thread/thread.h" #include "libc/thread/tls.h" #include "third_party/dlmalloc/vespene.internal.h" +#include "libc/thread/tls.h" #include "third_party/nsync/mu.h" +#if !IsTiny() +#define FOOTERS 1 +#define MSPACES 1 +#define ONLY_MSPACES 1 // enables scalable multi-threaded malloc +#else +#define INSECURE 1 +#define PROCEED_ON_ERROR 1 #define FOOTERS 0 #define MSPACES 0 +#define ONLY_MSPACES 0 +#endif #define HAVE_MMAP 1 #define HAVE_MREMAP 0 #define HAVE_MORECORE 0 #define USE_LOCKS 2 -#define USE_SPIN_LOCKS 0 +#define USE_SPIN_LOCKS 1 #define MORECORE_CONTIGUOUS 0 #define MALLOC_INSPECT_ALL 1 #define ABORT_ON_ASSERT_FAILURE 0 #define LOCK_AT_FORK 1 #define NO_MALLOC_STATS 1 -#if IsTiny() -#define INSECURE 1 -#define PROCEED_ON_ERROR 1 -#endif - #if IsModeDbg() #define DEBUG 1 #endif @@ -55,24 +60,29 @@ #define assert(x) if(!(x)) ABORT #endif -#include "third_party/dlmalloc/platform.inc" -#include "third_party/dlmalloc/locks.inc" -#include "third_party/dlmalloc/chunks.inc" -#include "third_party/dlmalloc/headfoot.inc" -#include "third_party/dlmalloc/global.inc" -#include "third_party/dlmalloc/system.inc" -#include "third_party/dlmalloc/hooks.inc" -#include "third_party/dlmalloc/debugging.inc" -#include "third_party/dlmalloc/indexing.inc" -#include "third_party/dlmalloc/binmaps.inc" -#include "third_party/dlmalloc/runtimechecks.inc" -#include "third_party/dlmalloc/init.inc" -#include "third_party/dlmalloc/debuglib.inc" -#include "third_party/dlmalloc/statistics.inc" -#include "third_party/dlmalloc/smallbins.inc" -#include "third_party/dlmalloc/directmap.inc" -#include "third_party/dlmalloc/trees.inc" -#include "third_party/dlmalloc/management.inc" +#include "platform.inc" +#include "locks.inc" +#include "chunks.inc" +#include "headfoot.inc" + +#if ONLY_MSPACES +#include "threaded.inc" +#endif + +#include "global.inc" +#include "system.inc" +#include "hooks.inc" +#include "debugging.inc" +#include "indexing.inc" +#include "binmaps.inc" +#include "runtimechecks.inc" +#include "init.inc" +#include "debuglib.inc" +#include "statistics.inc" +#include "smallbins.inc" +#include "directmap.inc" +#include "trees.inc" +#include "management.inc" /* -------------------------- System allocation -------------------------- */ @@ -584,7 +594,8 @@ static void* tmalloc_small(mstate m, size_t nb) { #if !ONLY_MSPACES -void* dlmalloc(size_t bytes) { +void* dlmalloc_single(size_t bytes) { + /* Basic algorithm: If a small request (< 256 bytes minus per-chunk overhead): @@ -733,7 +744,6 @@ void dlfree(void* mem) { free chunks, if they exist, and then place in a bin. Intermixed with special cases for top, dv, mmapped chunks, and usage errors. */ - if (mem != 0) { mchunkptr p = mem2chunk(mem); #if FOOTERS @@ -745,6 +755,8 @@ void dlfree(void* mem) { #else /* FOOTERS */ #define fm gm #endif /* FOOTERS */ + + /* Otherwise free memory globally. */ if (!PREACTION(fm)) { check_inuse_chunk(fm, p); if (RTCHECK(ok_address(fm, p) && ok_inuse(p))) { @@ -836,7 +848,7 @@ void dlfree(void* mem) { #endif /* FOOTERS */ } -void* dlcalloc(size_t n_elements, size_t elem_size) { +void* dlcalloc_single(size_t n_elements, size_t elem_size) { void* mem; size_t req = 0; if (ckd_mul(&req, n_elements, elem_size)) req = -1; @@ -932,10 +944,10 @@ static mchunkptr try_realloc_chunk(mstate m, mchunkptr p, size_t nb, static void* internal_memalign(mstate m, size_t alignment, size_t bytes) { void* mem = 0; - if (alignment < MIN_CHUNK_SIZE) /* must be at least a minimum chunk size */ + if (alignment < MIN_CHUNK_SIZE) /* must be at least a minimum chunk size */ alignment = MIN_CHUNK_SIZE; /* alignment is 32+ bytes rounded up to nearest two power */ - alignment = 2ul << bsrl(MAX(MIN_CHUNK_SIZE, alignment) - 1); + alignment = 2ul << bsrl(alignment - 1); if (bytes >= MAX_REQUEST - alignment) { if (m != 0) { /* Test isn't needed but avoids compiler warning */ MALLOC_FAILURE_ACTION; @@ -1222,7 +1234,7 @@ static void internal_inspect_all(mstate m, #if !ONLY_MSPACES -void* dlrealloc(void* oldmem, size_t bytes) { +void* dlrealloc_single(void* oldmem, size_t bytes) { void* mem = 0; if (oldmem == 0) { mem = dlmalloc(bytes); @@ -1298,7 +1310,7 @@ void* dlrealloc_in_place(void* oldmem, size_t bytes) { return mem; } -void* dlmemalign(size_t alignment, size_t bytes) { +void* dlmemalign_single(size_t alignment, size_t bytes) { if (alignment <= MALLOC_ALIGNMENT) { return dlmalloc(bytes); } @@ -1376,7 +1388,7 @@ size_t dlmalloc_set_footprint_limit(size_t bytes) { } #if !NO_MALLINFO -struct mallinfo dlmallinfo(void) { +struct mallinfo dlmallinfo_single(void) { return internal_mallinfo(gm); } #endif /* NO_MALLINFO */ @@ -1409,6 +1421,20 @@ size_t dlmalloc_usable_size(void* mem) { #endif /* !ONLY_MSPACES */ +#if ONLY_MSPACES +void *(*dlmalloc)(size_t); +void *(*dlcalloc)(size_t, size_t); +void *(*dlrealloc)(void *, size_t); +void *(*dlmemalign)(size_t, size_t); +struct mallinfo (*dlmallinfo)(void); +#else +void *(*dlmalloc)(size_t) = dlmalloc_single; +void *(*dlcalloc)(size_t, size_t) = dlcalloc_single; +void *(*dlrealloc)(void *, size_t) = dlrealloc_single; +void *(*dlmemalign)(size_t, size_t) = dlmemalign_single; +struct mallinfo (*dlmallinfo)(void) = dlmallinfo_single; +#endif + /* ----------------------------- user mspaces ---------------------------- */ #if MSPACES diff --git a/third_party/dlmalloc/dlmalloc.h b/third_party/dlmalloc/dlmalloc.h index 5ef2d1be6..edb86f27a 100644 --- a/third_party/dlmalloc/dlmalloc.h +++ b/third_party/dlmalloc/dlmalloc.h @@ -25,6 +25,28 @@ #define dlrealloc_in_place __dlrealloc_in_place #define dlrealloc_in_place __dlrealloc_in_place +#define create_mspace_with_base __create_mspace_with_base +#define mspace_bulk_free __mspace_bulk_free +#define mspace_calloc __mspace_calloc +#define mspace_footprint __mspace_footprint +#define mspace_footprint_limit __mspace_footprint_limit +#define mspace_free __mspace_free +#define mspace_independent_calloc __mspace_independent_calloc +#define mspace_independent_comalloc __mspace_independent_comalloc +#define mspace_inspect_all __mspace_inspect_all +#define mspace_mallinfo __mspace_mallinfo +#define mspace_malloc __mspace_malloc +#define mspace_malloc_stats __mspace_malloc_stats +#define mspace_mallopt __mspace_mallopt +#define mspace_max_footprint __mspace_max_footprint +#define mspace_memalign __mspace_memalign +#define mspace_realloc __mspace_realloc +#define mspace_realloc_in_place __mspace_realloc_in_place +#define mspace_set_footprint_limit __mspace_set_footprint_limit +#define mspace_track_large_chunks __mspace_track_large_chunks +#define mspace_trim __mspace_trim +#define mspace_usable_size __mspace_usable_size + COSMOPOLITAN_C_START_ /* @@ -41,7 +63,7 @@ COSMOPOLITAN_C_START_ maximum supported value of n differs across systems, but is in all cases less than the maximum representable value of a size_t. */ -void* dlmalloc(size_t); +extern void* (*dlmalloc)(size_t); /* free(void* p) @@ -57,7 +79,7 @@ void dlfree(void*); Returns a pointer to n_elements * element_size bytes, with all locations set to zero. */ -void* dlcalloc(size_t, size_t); +extern void* (*dlcalloc)(size_t, size_t); /* realloc(void* p, size_t n) @@ -81,7 +103,7 @@ void* dlcalloc(size_t, size_t); The old unix realloc convention of allowing the last-free'd chunk to be used as an argument to realloc is not supported. */ -void* dlrealloc(void*, size_t); +extern void* (*dlrealloc)(void*, size_t); /* realloc_in_place(void* p, size_t n) @@ -110,7 +132,7 @@ void* dlrealloc_in_place(void*, size_t); Overreliance on memalign is a sure way to fragment space. */ -void* dlmemalign(size_t, size_t); +extern void* (*dlmemalign)(size_t, size_t); /* mallopt(int parameter_number, int parameter_value) @@ -233,7 +255,7 @@ void dlmalloc_inspect_all(void (*handler)(void*, void*, size_t, void*), thus be inaccurate. */ -struct mallinfo dlmallinfo(void); +extern struct mallinfo (*dlmallinfo)(void); /* independent_calloc(size_t n_elements, size_t element_size, void* chunks[]); diff --git a/third_party/dlmalloc/init.inc b/third_party/dlmalloc/init.inc index 684e68995..264700f1c 100644 --- a/third_party/dlmalloc/init.inc +++ b/third_party/dlmalloc/init.inc @@ -2,13 +2,38 @@ /* ---------------------------- setting mparams -------------------------- */ #if LOCK_AT_FORK +#if ONLY_MSPACES + +static void dlmalloc_pre_fork(void) { + mstate h; + for (unsigned i = 0; i < ARRAYLEN(g_heaps); ++i) + if ((h = atomic_load_explicit(&g_heaps[i], memory_order_acquire))) + ACQUIRE_LOCK(&h->mutex); +} + +static void dlmalloc_post_fork_parent(void) { + mstate h; + for (unsigned i = 0; i < ARRAYLEN(g_heaps); ++i) + if ((h = atomic_load_explicit(&g_heaps[i], memory_order_acquire))) + RELEASE_LOCK(&h->mutex); +} + +static void dlmalloc_post_fork_child(void) { + mstate h; + for (unsigned i = 0; i < ARRAYLEN(g_heaps); ++i) + if ((h = atomic_load_explicit(&g_heaps[i], memory_order_acquire))) + (void)INITIAL_LOCK(&h->mutex); +} + +#else static void dlmalloc_pre_fork(void) { ACQUIRE_LOCK(&(gm)->mutex); } static void dlmalloc_post_fork_parent(void) { RELEASE_LOCK(&(gm)->mutex); } static void dlmalloc_post_fork_child(void) { (void)INITIAL_LOCK(&(gm)->mutex); } +#endif /* ONLY_MSPACES */ #endif /* LOCK_AT_FORK */ /* Initialize mparams */ -__attribute__((__constructor__(50))) int init_mparams(void) { +__attribute__((__constructor__(49))) int init_mparams(void) { #ifdef NEED_GLOBAL_LOCK_INIT if (malloc_global_mutex_status <= 0) init_malloc_global_mutex(); @@ -95,6 +120,10 @@ __attribute__((__constructor__(50))) int init_mparams(void) { // RELEASE_MALLOC_GLOBAL_LOCK(); +#if ONLY_MSPACES + threaded_dlmalloc(); +#endif + __runlevel = RUNLEVEL_MALLOC; return 1; } diff --git a/third_party/dlmalloc/locks.inc b/third_party/dlmalloc/locks.inc index b74887916..037442ac5 100644 --- a/third_party/dlmalloc/locks.inc +++ b/third_party/dlmalloc/locks.inc @@ -78,7 +78,7 @@ static int malloc_unlock(MLOCK_T *lk) { #define ACQUIRE_LOCK(lk) malloc_lock(lk) #define RELEASE_LOCK(lk) malloc_unlock(lk) #define INITIAL_LOCK(lk) malloc_wipe(lk) -#define DESTROY_LOCK(lk) +#define DESTROY_LOCK(lk) malloc_wipe(lk) #define ACQUIRE_MALLOC_GLOBAL_LOCK() ACQUIRE_LOCK(&malloc_global_mutex); #define RELEASE_MALLOC_GLOBAL_LOCK() RELEASE_LOCK(&malloc_global_mutex); diff --git a/third_party/dlmalloc/mspaces.inc b/third_party/dlmalloc/mspaces.inc index a9355d29a..1f048d0eb 100644 --- a/third_party/dlmalloc/mspaces.inc +++ b/third_party/dlmalloc/mspaces.inc @@ -5,7 +5,7 @@ static mstate init_user_mstate(char* tbase, size_t tsize) { mchunkptr mn; mchunkptr msp = align_as_chunk(tbase); mstate m = (mstate)(chunk2mem(msp)); - bzero(m, msize); + // bzero(m, msize); // [jart] it is not needed (void)INITIAL_LOCK(&m->mutex); msp->head = (msize|INUSE_BITS); m->seg.base = m->least_addr = tbase; @@ -32,7 +32,7 @@ mspace create_mspace(size_t capacity, int locked) { size_t rs = ((capacity == 0)? mparams.granularity : (capacity + TOP_FOOT_SIZE + msize)); size_t tsize = granularity_align(rs); - char* tbase = (char*)(dlmalloc_requires_more_vespene_gas(tsize)); + char* tbase = (char*)dlmalloc_requires_more_vespene_gas(tsize); if (tbase != CMFAIL) { m = init_user_mstate(tbase, tsize); m->seg.sflags = USE_MMAP_BIT; 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 diff --git a/third_party/dlmalloc/threaded.inc b/third_party/dlmalloc/threaded.inc new file mode 100644 index 000000000..904201603 --- /dev/null +++ b/third_party/dlmalloc/threaded.inc @@ -0,0 +1,196 @@ +/*-*- 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/dce.h" +#include "libc/intrin/magicu.h" +#include "libc/intrin/strace.internal.h" +#include "libc/intrin/weaken.h" +#include "libc/macros.internal.h" +#include "libc/nexgen32e/rdtscp.h" +#include "libc/nexgen32e/x86feature.h" +#include "libc/runtime/runtime.h" +#include "libc/thread/thread.h" +#include "third_party/dlmalloc/dlmalloc.h" + +#if !FOOTERS || !MSPACES +#error "threaded dlmalloc needs footers and mspaces" +#endif + +static struct magicu magiu; +static unsigned g_heapslen; +static mstate g_heaps[128]; + +void dlfree(void *p) { + return mspace_free(0, p); +} + +size_t dlmalloc_usable_size(void* mem) { + return mspace_usable_size(mem); +} + +void* dlrealloc_in_place(void *p, size_t n) { + return mspace_realloc_in_place(0, p, n); +} + +int dlmallopt(int param_number, int value) { + return mspace_mallopt(param_number, value); +} + +int dlmalloc_trim(size_t pad) { + int got_some = 0; + for (unsigned i = 0; i < g_heapslen; ++i) + got_some |= mspace_trim(g_heaps[i], pad); + return got_some; +} + +size_t dlbulk_free(void *array[], size_t nelem) { + for (size_t i = 0; i < nelem; ++i) + mspace_free(0, array[i]); + return 0; +} + +void dlmalloc_inspect_all(void handler(void *start, void *end, + size_t used_bytes, void *callback_arg), + void *arg) { + for (unsigned i = 0; i < g_heapslen; ++i) + mspace_inspect_all(g_heaps[i], handler, arg); +} + +forceinline mstate get_arena(void) { + unsigned cpu; +#ifdef __x86_64__ + unsigned tsc_aux; + rdtscp(&tsc_aux); + cpu = TSC_AUX_CORE(tsc_aux); +#else + long tpidr_el0; + asm("mrs\t%0,tpidr_el0" : "=r"(tpidr_el0)); + cpu = tpidr_el0 & 255; +#endif + return g_heaps[__magicu_div(cpu, magiu) % g_heapslen]; +} + +static void *dlmalloc_single(size_t n) { + return mspace_malloc(g_heaps[0], n); +} + +static void *dlmalloc_threaded(size_t n) { + return mspace_malloc(get_arena(), n); +} + +static void *dlcalloc_single(size_t n, size_t z) { + return mspace_calloc(g_heaps[0], n, z); +} + +static void *dlcalloc_threaded(size_t n, size_t z) { + return mspace_calloc(get_arena(), n, z); +} + +static void *dlrealloc_single(void *p, size_t n) { + return mspace_realloc(g_heaps[0], p, n); +} + +static void *dlrealloc_threaded(void *p, size_t n) { + if (p) + return mspace_realloc(0, p, n); + else + return mspace_malloc(get_arena(), n); +} + +static void *dlmemalign_single(size_t a, size_t n) { + return mspace_memalign(g_heaps[0], a, n); +} + +static void *dlmemalign_threaded(size_t a, size_t n) { + return mspace_memalign(get_arena(), a, n); +} + +static struct mallinfo dlmallinfo_single(void) { + return mspace_mallinfo(g_heaps[0]); +} + +static struct mallinfo dlmallinfo_threaded(void) { + return mspace_mallinfo(get_arena()); +} + +static int dlmalloc_atoi(const char *s) { + int c, x = 0; + while ((c = *s++)) { + x *= 10; + x += c - '0'; + } + return x; +} + +static void use_single_heap(bool uses_locks) { + g_heapslen = 1; + dlmalloc = dlmalloc_single; + dlcalloc = dlcalloc_single; + dlrealloc = dlrealloc_single; + dlmemalign = dlmemalign_single; + dlmallinfo = dlmallinfo_single; + if (!(g_heaps[0] = create_mspace(0, uses_locks))) + __builtin_trap(); +} + +static void threaded_dlmalloc(void) { + int heaps, cpus; + const char *var; + + if (!_weaken(pthread_create)) + return use_single_heap(false); + + if (!IsAarch64() && !X86_HAVE(RDTSCP)) + return use_single_heap(true); + + // determine how many independent heaps we should install + // by default we do an approximation of one heap per core + // this code makes the c++ stl go 164x faster on my ryzen + cpus = __get_cpu_count(); + if (cpus == -1) + heaps = 1; + else if ((var = getenv("COSMOPOLITAN_HEAP_COUNT"))) + heaps = dlmalloc_atoi(var); + else + heaps = cpus >> 1; + if (heaps <= 1) + return use_single_heap(true); + if (heaps > ARRAYLEN(g_heaps)) + heaps = ARRAYLEN(g_heaps); + + // find 𝑑 such that sched_getcpu() / 𝑑 is within [0,heaps) + // turn 𝑑 into a fast magic that can divide by multiplying + magiu = __magicu_get(cpus / heaps); + + // we need this too due to linux's cpu count affinity hack + g_heapslen = heaps; + + // create the arenas + for (size_t i = 0; i < g_heapslen; ++i) + if (!(g_heaps[i] = create_mspace(0, true))) + __builtin_trap(); + + // install function pointers + dlmalloc = dlmalloc_threaded; + dlcalloc = dlcalloc_threaded; + dlrealloc = dlrealloc_threaded; + dlmemalign = dlmemalign_threaded; + dlmallinfo = dlmallinfo_threaded; + + STRACE("created %d dlmalloc arenas for %d cpus", heaps, cpus); +} diff --git a/third_party/double-conversion/BUILD.mk b/third_party/double-conversion/BUILD.mk index 0f80daa39..10da7f072 100644 --- a/third_party/double-conversion/BUILD.mk +++ b/third_party/double-conversion/BUILD.mk @@ -31,6 +31,7 @@ THIRD_PARTY_DOUBLECONVERSION_A_CHECKS = \ THIRD_PARTY_DOUBLECONVERSION_A_DIRECTDEPS = \ LIBC_INTRIN \ + LIBC_MEM \ LIBC_STR \ LIBC_TINYMATH \ THIRD_PARTY_LIBCXXABI diff --git a/third_party/double-conversion/test/BUILD.mk b/third_party/double-conversion/test/BUILD.mk index b601bd7c6..41a5bc39c 100644 --- a/third_party/double-conversion/test/BUILD.mk +++ b/third_party/double-conversion/test/BUILD.mk @@ -42,6 +42,7 @@ THIRD_PARTY_DOUBLECONVERSION_TEST_DIRECTDEPS = \ LIBC_NEXGEN32E \ LIBC_RUNTIME \ LIBC_FMT \ + LIBC_MEM \ LIBC_SYSV \ LIBC_STR \ LIBC_TINYMATH \ diff --git a/third_party/double-conversion/test/cctest.h b/third_party/double-conversion/test/cctest.h index 0ab162b76..41947b667 100644 --- a/third_party/double-conversion/test/cctest.h +++ b/third_party/double-conversion/test/cctest.h @@ -26,6 +26,7 @@ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef CCTEST_H_ #define CCTEST_H_ +#include "libc/stdio/stdio.h" #include "third_party/double-conversion/utils.h" #ifndef TEST diff --git a/third_party/double-conversion/wrapper.cc b/third_party/double-conversion/wrapper.cc index be64a747b..11b56291c 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 │ │ │ @@ -38,7 +38,7 @@ char* DoubleToJson(char buf[128], double x) { static const DoubleToStringConverter kDoubleToJson( DoubleToStringConverter::UNIQUE_ZERO | DoubleToStringConverter::EMIT_POSITIVE_EXPONENT_SIGN, - "null", "null", 'e', -6, 21, 6, 0); + "1e5000", "null", 'e', -6, 21, 6, 0); kDoubleToJson.ToShortest(x, &b); b.Finalize(); if (READ32LE(buf) != READ32LE("-nul")) { 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/getopt/BUILD.mk b/third_party/getopt/BUILD.mk index 7e6b1e0cb..535e43fd7 100644 --- a/third_party/getopt/BUILD.mk +++ b/third_party/getopt/BUILD.mk @@ -34,6 +34,8 @@ $(THIRD_PARTY_GETOPT_A).pkg: \ $(THIRD_PARTY_GETOPT_A_OBJS) \ $(foreach x,$(THIRD_PARTY_GETOPT_A_DIRECTDEPS),$($(x)_A).pkg) +$(THIRD_PARTY_GETOPT_A_OBJS): private COPTS += -fno-sanitize=address + THIRD_PARTY_GETOPT_LIBS = $(foreach x,$(THIRD_PARTY_GETOPT_ARTIFACTS),$($(x))) THIRD_PARTY_GETOPT_SRCS = $(foreach x,$(THIRD_PARTY_GETOPT_ARTIFACTS),$($(x)_SRCS)) THIRD_PARTY_GETOPT_HDRS = $(foreach x,$(THIRD_PARTY_GETOPT_ARTIFACTS),$($(x)_HDRS)) diff --git a/third_party/getopt/getopt.internal.h b/third_party/getopt/getopt.internal.h index 9ef787473..faeb198f6 100644 --- a/third_party/getopt/getopt.internal.h +++ b/third_party/getopt/getopt.internal.h @@ -16,7 +16,7 @@ COSMOPOLITAN_C_START_ extern char *optarg; extern int optind, opterr, optopt, optreset; -int getopt(int, char *const[], const char *) paramsnonnull(); +int getopt(int, char *const[], const char *) paramsnonnull() libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_GETOPT_H_ */ 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..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 \ @@ -197,13 +1077,14 @@ 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_MUSL \ + THIRD_PARTY_TZ THIRD_PARTY_LIBCXX_A_DEPS := \ $(call uniq,$(foreach x,$(THIRD_PARTY_LIBCXX_A_DIRECTDEPS),$($(x)))) @@ -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..d99f4580e --- /dev/null +++ b/third_party/libcxx/__config_site @@ -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___CONFIG_SITE +#define _LIBCPP___CONFIG_SITE + +// every c++ program is bound to include *something* from the stl +// therefore we schlep in 28k of code needed to print c++ symbols +// however c programs should never include *any* stl headers ever +#ifndef TINY +__static_yoink("__demangle"); +#endif + +// 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 +#define _LIBCPP_REMOVE_TRANSITIVE_INCLUDES + +#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