From 1b9fbc81ff15f6ad5a0e7f29c486c6edd0bce94c Mon Sep 17 00:00:00 2001 From: Mike Hommey Date: Thu, 26 Jan 2023 21:28:09 +0100 Subject: [PATCH] [extract_symbols.py] Filter out more symbols for MSVC This strips out about 5k symbols. Fixes https://github.com/llvm/llvm-project/issues/60109 Reviewed By: john.brawn Differential Revision: https://reviews.llvm.org/D142431 --- llvm/utils/extract_symbols.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/llvm/utils/extract_symbols.py b/llvm/utils/extract_symbols.py index 0f8e8ba64c80..298ee6ba4eeb 100755 --- a/llvm/utils/extract_symbols.py +++ b/llvm/utils/extract_symbols.py @@ -141,7 +141,10 @@ def should_keep_microsoft_symbol(symbol, calling_convention_decoration): # Remove calling convention decoration from names match = re.match('[_@]([^@]+)', symbol) if match: - return match.group(1) + symbol = match.group(1) + # Discard floating point/SIMD constants. + if symbol.startswith(("__xmm@", "__ymm@", "__real@")): + return None return symbol # Function template instantiations start with ?$; keep the instantiations of # clang::Type::getAs, as some of them are explipict specializations that are @@ -165,6 +168,9 @@ def should_keep_microsoft_symbol(symbol, calling_convention_decoration): # namespace doesn't exist outside of that translation unit. elif re.search('\?A(0x\w+)?@', symbol): return None + # Skip X86GenMnemonicTables functions, they are not exposed from llvm/include/. + elif re.match('\?is[A-Z0-9]*@X86@llvm', symbol): + return None # Keep mangled llvm:: and clang:: function symbols. How we detect these is a # bit of a mess and imprecise, but that avoids having to completely demangle # the symbol name. The outermost namespace is at the end of the identifier -- 2.39.0.1.g6739ec1790