llvm-project/clang/utils
Simon Tatham 98ea4b30c2 [ARM,MVE] Make the MVE intrinsics work in C++!
Summary:
Apparently nobody has tried this in months of development. It turns
out that `FunctionDecl::getBuiltinID` will never consider a function
to be a builtin if it is in C++ and not extern "C". So none of the
function declarations in <arm_mve.h> are recognized as builtins when
clang is compiling in C++ mode: it just emits calls to them as
ordinary functions, which then turn out not to exist at link time.

The trivial fix is to wrap most of arm_mve.h in an extern "C".

Added a test in clang/test/CodeGen/arm-mve-intrinsics which checks
basic functioning of the MVE header file in C++ mode. I've filled it
with copies of existing test functions from other files in that
directory, including a few moderately tricky cases of overloading (in
particular one that relies on the strict-polymorphism attribute added
in D72518).

(I considered making //every// test in that directory compile in both
C and C++ mode and check the code generation was identical. But I
think that would increase testing time by more than the value it adds,
and also update_cc_test_checks gets confused when the output function
name varies between RUN lines.)

Reviewers: LukeGeeson, MarkMurrayARM, miyuki, dmgreen

Reviewed By: MarkMurrayARM

Subscribers: kristof.beyls, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D73268
2020-01-23 14:10:27 +00:00
..
ABITest Portable Python script across Python version 2018-12-18 16:07:37 +00:00
CIndex Portable Python script across Python version 2018-12-18 16:07:37 +00:00
ClangVisualizers Improve MSVC visualizations so the parser shows where we are in the code 2019-08-06 13:29:35 +00:00
TableGen [ARM,MVE] Make the MVE intrinsics work in C++! 2020-01-23 14:10:27 +00:00
TestUtils Portable Python script across Python version 2018-12-18 16:07:37 +00:00
VtableTest
analyzer [analyzer] exploded-graph-rewriter: Fix string encodings in python3. 2019-12-21 10:59:38 -08:00
check_cfc Portable Python script across Python version 2019-01-03 14:27:05 +00:00
hmaptool [clang] [cmake] Add distribution install targets for remaining components 2019-10-04 05:43:20 +00:00
perf-training [perf-training] Ignore ' (in-process)' prefix from -### 2020-01-17 09:38:35 -08:00
valgrind
CaptureCmd
ClangDataFormat.py
CmpDriver
FindSpecRefs
FuzzTest
bash-autocomplete.sh [bash-completion] Fix tab separation on macOS 2018-05-24 16:25:40 +00:00
builtin-defines.c This reverts commit 632a36bfcfc8273c1861f04ff6758d863c47c784. 2019-07-13 06:27:35 +00:00
clangdiag.py Portable Python script across Python version 2018-12-18 16:07:37 +00:00
convert_arm_neon.py Recommit ARM-NEON: make type modifiers orthogonal and allow multiple modifiers. 2019-11-26 09:21:47 +00:00
creduce-clang-crash.py Handle two corner cases in creduce-clang-crash.py 2019-12-05 16:24:24 -08:00
find-unused-diagnostics.sh Unused diagnostics can occur in tblgen. 2018-01-25 15:57:22 +00:00
make-ast-dump-check.sh Add script to update OpenMP -ast-dump test expectations, and use it to 2019-06-02 04:00:38 +00:00
modfuzz.py Portable Python script across Python version 2018-12-18 16:07:37 +00:00
token-delta.py Portable Python script across Python version 2018-12-18 16:07:37 +00:00