aboutsummaryrefslogtreecommitdiff
path: root/gcc/debug.c
diff options
context:
space:
mode:
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>2018-06-05 09:50:16 +0000
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>2018-06-05 09:50:16 +0000
commit12b2b9103a52b909f5df5ce20e3761f3f1d27211 (patch)
treedee8dcc539595af6124b37bb55f95e418589c30a /gcc/debug.c
parent7f3577f5285957c1aa48823ce6c691f8c212b219 (diff)
downloadgcc-12b2b9103a52b909f5df5ce20e3761f3f1d27211.zip
gcc-12b2b9103a52b909f5df5ce20e3761f3f1d27211.tar.gz
gcc-12b2b9103a52b909f5df5ce20e3761f3f1d27211.tar.bz2
[arm] PR target/81497: Fix arm_acle.h for C++
When trying to compile something with arm_acle.h using G++ we get a number of nasty errors: arm_acle.h:48:49: error: invalid conversion from ‘const void*’ to ‘const int*’ [-fpermissive] return __builtin_arm_ldc (__coproc, __CRd, __p); This is because the intrinsics that are supposed to be void return the "result" of their builtin, which is void. C lets that slide but C++ complains. After fixing that we run into further errors: arm_acle.h:48:46: error: invalid conversion from 'const void*' to 'const int*' [-fpermissive] return __builtin_arm_ldc (__coproc, __CRd, __p); ^~~ Because the pointer arguments in these intrinsics are void pointers but the builtin expects int pointers. So this patch introduces new qualifiers for void pointers and their const-qualified versions and uses that in the specification of these intrinsics. This gives us the opportunity of creating an arm subdirectory in g++.dg and inaugurates it with the first arm-specific C++ tests (in that directory). PR target/81497 * config/arm/arm-builtins.c (arm_type_qualifiers): Add qualifier_void_pointer and qualifier_const_void_pointer. (arm_ldc_qualifiers, arm_stc_qualifiers): Use the above. (arm_init_builtins): Handle the above. * config/arm/arm_acle.h (__arm_cdp, __arm_ldc, __arm_ldcl, __arm_stc, __arm_stcl, __arm_mcr, __arm_cdp2, __arm_ldc2, __arm_ldcl2, __arm_stc2, __arm_stcl2,__arm_mcr2, __arm_mcrr, __arm_mcrr2): Remove return for void intrinsics. * g++.target/arm/arm.exp: New file. * g++.target/arm/pr81497.C: Likewise. From-SVN: r261191
Diffstat (limited to 'gcc/debug.c')
0 files changed, 0 insertions, 0 deletions