aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2019-12-30Add missing file expected with rev 279781Olivier Hainque1-0/+32
From-SVN: r279785
2019-12-30Setup system header wrappers for C++ on VxWorksOlivier Hainque2-1/+28
Starting from VxWorks 7, the system comes with a Dinkumware environment which requires the inclusion of "yvals.h" before other system headers. We provide wrapped versions of a few headers to accommodate such constraints. 2019-12-30 Jerome Lambourg <lambourg@adaccore.com> Olivier Hainque <hainque@adacore.com> gcc/ * config/vxworks/_yvals.h: New file. * config/vxworks/_yvals-wrapper.h: New file. * gcc/config/vxworks/math.h: Use it to wrap the VxWorks math.h header. * gcc/config/vxworks/complex.h: Likewise. * gcc/config/vxworks/setjmp.h: Likewise. * gcc/config/vxworks/inttypes.h: Likewise. * config.gcc (*-*-vxworks*): Add system header wrappers to extra_headers. (powerpc-*-vxworks*): Reuse the common extra_headers. From-SVN: r279784
2019-12-30Introduce an internal API for VxWorks version checksOlivier Hainque5-13/+26
This changes introduces an internal API for VxWorks version checks within runtime files, a prerequisite to a few fixes coming up for libstdc++ builds on more recent versions of the OS. 2019-12-30 Olivier Hainque <hainque@adacore.com> gcc/ * config/vxworks/_vxworks-versions.h: New file. * config.gcc (*-*-vxworks*): Add it to extra_headers. libgcc/ * config/gthr-vxworks.h: Use _vxworks-versions.h. * config/gthr-vxworks-tls.c: Likewise. From-SVN: r279783
2019-12-30Simplify the compilation commands for config/vxworks.cOlivier Hainque2-3/+8
2019-12-30 Olivier Hainque <hainque@adacore.com> * config/t-vxworks: Rework the vxworks.o compilation rules to use $(COMPILE). From-SVN: r279782
2019-12-30Setup TARGET_C_PREINCLUDE for VxWorksJoel Brobecker3-0/+17
This patch modifies the C & C++ VxWorks compiler to predefine the __STDC_ macros verified by gcc.dg/c99-predef-1.c in the testsuite. 2019-12-13 Joel Brobecker <brobecker@adacore.com> * config.gcc <*-*-vxworks*>: Add vxworks-c.o to c_target_objs and cxx_target_objs. Set target_has_targetcm to "yes". Add vxworks-predef.h to extra_headers. * config/t-vxworks (vxworks-c.o): New target. * config/vxworks-c.c: New file. * config/vxworks/vxworks-predef.h: New file. From-SVN: r279781
2019-12-30Refine definitions for wchar_t/wint_t on VxWorksAlexandre Oliva2-6/+29
This change refines the VxWorks macro definitions configuring wchar_t to accommodate the VxWorks7 environment, where wchar_t is now typically a 32bit type. We also ensure that the definitions for wint_t are always based on those for wchar_t, so the two remain in sync in environments where WCHAR_TYPE is redefined for a specific CPU architecture. 2019-12-30 Alexandre Oliva <oliva@adacore.com> Olivier Hainque <hainque@adacore.com> * config/vx-common.h (WCHAR_TYPE_SIZE): 32 on VxWorks 7. (WCHAR_TYPE): Pick accordingly. (WINT_TYPE_SIZE): Define in terms of WCHAR_TYPE_SIZE. (WINT_TYPE): Define in terms of WCHAR_TYPE. Co-Authored-By: Olivier Hainque <hainque@adacore.com> From-SVN: r279780
2019-12-30Identify sections in vx-common.hOlivier Hainque2-6/+19
2019-12-30 Olivier Hainque <hainque@adacore.com> * config/vx-common.h: Minor reorganization and add sectioning comments. From-SVN: r279779
2019-12-30Define STARTFILE_PREFIX_SPEC for powerpc VxWorks < 7Doug Rupp2-0/+11
2019-12-30 Doug Rupp <rupp@adacore.com> * config/rs6000/vxworks.h (STARTFILE_PREFIX_SPEC): Define. From-SVN: r279778
2019-12-30Improve recursion protection for VxWorks limits.hOlivier Hainque2-3/+41
2019-12-30 Olivier Hainque <hainque@adacore.com> Jerome Lambourg <labourg@adacore.com> * config/t-vxworks: Arrange to alter/restore glimits.h before/after stmp-int-hdrs, so it uses a different macro name to protect itself against recursive inclusions. Co-Authored-By: Jerome Lambourg <lambourg@adacore.com> From-SVN: r279777
2019-12-30Improve VxWorks GTHREAD_ONCE_INITOlivier Hainque2-1/+6
2019-12-30 Olivier Hainque <hainque@adacore.com> * config/gthr-vxworks.h (GTHREAD_ONCE_INIT): Use standard zero-initializer syntax. From-SVN: r279776
2019-12-30Fix macro reference in gthr-vxworks-tls.cOlivier Hainque2-1/+6
2019-12-30 Olivier Hainque <hainque@adacore.com> libgcc/ * config/gthr-vxworks-tls.c (__gthread_getspecific): Fix reference to the internal VX_GET_TLS_DATA interface. From-SVN: r279775
2019-12-30Fix typo in macro name guarding conditional in vxcrtstuff.cOlivier Hainque2-2/+7
2019-12-30 Olivier Hainque <hainque@adacore.com> libgcc/ * config/vxcrtstuff.c: Fix incorrect spelling of USE_INITFINI_ARRAY in guard. From-SVN: r279774
2019-12-30re PR libgomp/93066 (libgomp/target.c:525:46: error: expected expression ↵John David Anglin4-5/+111
before ')' token) PR libgomp/93066 * inclhack.def (hpux_c99_inttypes3): Fix defines for INTPTR_MAX and UINTPTR_MAX, and missing define for SIZE_MAX. * fixincl.x: Regenerate. * tests/base/inttypes.h: Update for above fix. From-SVN: r279773
2019-12-30Fix builtin functions needlessly using VIEW_CONVERT_EXPRs on their operands.Peter Bergner6-225/+1235
gcc/ PR target/92923 * config/rs6000/rs6000-builtin.def (VAND, VANDC, VNOR, VOR, VXOR): Delete. (EQV_V16QI_UNS, EQV_V8HI_UNS, EQV_V4SI_UNS, EQV_V2DI_UNS, EQV_V1TI_UNS, NAND_V16QI_UNS, NAND_V8HI_UNS, NAND_V4SI_UNS, NAND_V2DI_UNS, NAND_V1TI_UNS, ORC_V16QI_UNS, ORC_V8HI_UNS, ORC_V4SI_UNS, ORC_V2DI_UNS, ORC_V1TI_UNS, VAND_V16QI_UNS, VAND_V16QI, VAND_V8HI_UNS, VAND_V8HI, VAND_V4SI_UNS, VAND_V4SI, VAND_V2DI_UNS, VAND_V2DI, VAND_V4SF, VAND_V2DF, VANDC_V16QI_UNS, VANDC_V16QI, VANDC_V8HI_UNS, VANDC_V8HI, VANDC_V4SI_UNS, VANDC_V4SI, VANDC_V2DI_UNS, VANDC_V2DI, VANDC_V4SF, VANDC_V2DF, VNOR_V16QI_UNS, VNOR_V16QI, VNOR_V8HI_UNS, VNOR_V8HI, VNOR_V4SI_UNS, VNOR_V4SI, VNOR_V2DI_UNS, VNOR_V2DI, VNOR_V4SF, VNOR_V2DF, VOR_V16QI_UNS, VOR_V16QI, VOR_V8HI_UNS, VOR_V8HI, VOR_V4SI_UNS, VOR_V4SI, VOR_V2DI_UNS, VOR_V2DI, VOR_V4SF, VOR_V2DF, VXOR_V16QI_UNS, VXOR_V16QI, VXOR_V8HI_UNS, VXOR_V8HI, VXOR_V4SI_UNS, VXOR_V4SI, VXOR_V2DI_UNS, VXOR_V2DI, VXOR_V4SF, VXOR_V2DF): Add definitions. * config/rs6000/rs6000-call.c (altivec_overloaded_builtins) <ALTIVEC_BUILTIN_VAND, ALTIVEC_BUILTIN_VANDC, ALTIVEC_BUILTIN_VNOR, ALTIVEC_BUILTIN_VOR, ALTIVEC_BUILTIN_VXOR>: Remove. <ALTIVEC_BUILTIN_VAND_V4SF, ALTIVEC_BUILTIN_VAND_V2DF, ALTIVEC_BUILTIN_VAND_V2DI, ALTIVEC_BUILTIN_VAND_V2DI_UNS, ALTIVEC_BUILTIN_VAND_V4SI_UNS, ALTIVEC_BUILTIN_VAND_V4SI, ALTIVEC_BUILTIN_VAND_V8HI_UNS, ALTIVEC_BUILTIN_VAND_V8HI, ALTIVEC_BUILTIN_VAND_V16QI, ALTIVEC_BUILTIN_VAND_V16QI_UNS, ALTIVEC_BUILTIN_VANDC_V4SF, ALTIVEC_BUILTIN_VANDC_V2DF, ALTIVEC_BUILTIN_VANDC_V2DI, ALTIVEC_BUILTIN_VANDC_V2DI_UNS, ALTIVEC_BUILTIN_VANDC_V4SI_UNS, ALTIVEC_BUILTIN_VANDC_V4SI, ALTIVEC_BUILTIN_VANDC_V8HI_UNS, ALTIVEC_BUILTIN_VANDC_V8HI, ALTIVEC_BUILTIN_VANDC_V16QI, ALTIVEC_BUILTIN_VANDC_V16QI_UNS, ALTIVEC_BUILTIN_VNOR_V4SF, ALTIVEC_BUILTIN_VNOR_V2DF, ALTIVEC_BUILTIN_VNOR_V2DI, ALTIVEC_BUILTIN_VNOR_V2DI_UNS, ALTIVEC_BUILTIN_VNOR_V4SI, ALTIVEC_BUILTIN_VNOR_V4SI_UNS, ALTIVEC_BUILTIN_VNOR_V8HI, ALTIVEC_BUILTIN_VNOR_V8HI_UNS, ALTIVEC_BUILTIN_VNOR_V16QI, ALTIVEC_BUILTIN_VNOR_V16QI_UNS, ALTIVEC_BUILTIN_VOR_V4SF, ALTIVEC_BUILTIN_VOR_V2DF, ALTIVEC_BUILTIN_VOR_V2DI, ALTIVEC_BUILTIN_VOR_V2DI_UNS, ALTIVEC_BUILTIN_VOR_V4SI_UNS, ALTIVEC_BUILTIN_VOR_V4SI, ALTIVEC_BUILTIN_VOR_V8HI_UNS, ALTIVEC_BUILTIN_VOR_V8HI, ALTIVEC_BUILTIN_VOR_V16QI, ALTIVEC_BUILTIN_VOR_V16QI_UNS, ALTIVEC_BUILTIN_VXOR_V4SF, ALTIVEC_BUILTIN_VXOR_V2DF, ALTIVEC_BUILTIN_VXOR_V2DI, ALTIVEC_BUILTIN_VXOR_V2DI_UNS, ALTIVEC_BUILTIN_VXOR_V4SI_UNS, ALTIVEC_BUILTIN_VXOR_V4SI, ALTIVEC_BUILTIN_VXOR_V8HI, ALTIVEC_BUILTIN_VXOR_V8HI_UNS, ALTIVEC_BUILTIN_VXOR_V16QI, ALTIVEC_BUILTIN_VXOR_V16QI_UNS>: Add definitions. <P8V_BUILTIN_EQV_V16QI, P8V_BUILTIN_EQV_V8HI, P8V_BUILTIN_EQV_V4SI, P8V_BUILTIN_EQV_V2DI, P8V_BUILTIN_NAND_V16QI, P8V_BUILTIN_NAND_V8HI, P8V_BUILTIN_NAND_V4SI, P8V_BUILTIN_NAND_V2DI, P8V_BUILTIN_ORC_V16QI, P8V_BUILTIN_ORC_V8HI, P8V_BUILTIN_ORC_V4SI, P8V_BUILTIN_ORC_V2DI>: Change unsigned usages to use the new *_UNS definition names. (rs6000_gimple_fold_builtin) <ALTIVEC_BUILTIN_VAND_V16QI_UNS, ALTIVEC_BUILTIN_VAND_V16QI, ALTIVEC_BUILTIN_VAND_V8HI_UNS, ALTIVEC_BUILTIN_VAND_V8HI, ALTIVEC_BUILTIN_VAND_V4SI_UNS, ALTIVEC_BUILTIN_VAND_V4SI, ALTIVEC_BUILTIN_VAND_V2DI_UNS, ALTIVEC_BUILTIN_VAND_V2DI, ALTIVEC_BUILTIN_VAND_V4SF, ALTIVEC_BUILTIN_VAND_V2DF, ALTIVEC_BUILTIN_VANDC_V16QI_UNS, ALTIVEC_BUILTIN_VANDC_V16QI, ALTIVEC_BUILTIN_VANDC_V8HI_UNS, ALTIVEC_BUILTIN_VANDC_V8HI, ALTIVEC_BUILTIN_VANDC_V4SI_UNS, ALTIVEC_BUILTIN_VANDC_V4SI, ALTIVEC_BUILTIN_VANDC_V2DI_UNS, ALTIVEC_BUILTIN_VANDC_V2DI, ALTIVEC_BUILTIN_VANDC_V4SF, ALTIVEC_BUILTIN_VANDC_V2DF, P8V_BUILTIN_NAND_V16QI_UNS, P8V_BUILTIN_NAND_V8HI_UNS, P8V_BUILTIN_NAND_V4SI_UNS, P8V_BUILTIN_NAND_V2DI_UNS, P8V_BUILTIN_NAND_V2DI, ALTIVEC_BUILTIN_VOR_V16QI_UNS, ALTIVEC_BUILTIN_VOR_V16QI, ALTIVEC_BUILTIN_VOR_V8HI_UNS, ALTIVEC_BUILTIN_VOR_V8HI, ALTIVEC_BUILTIN_VOR_V4SI_UNS, ALTIVEC_BUILTIN_VOR_V4SI, ALTIVEC_BUILTIN_VOR_V2DI_UNS, ALTIVEC_BUILTIN_VOR_V2DI, ALTIVEC_BUILTIN_VOR_V4SF, ALTIVEC_BUILTIN_VOR_V2DF, P8V_BUILTIN_ORC_V16QI_UNS, P8V_BUILTIN_ORC_V8HI_UNS, P8V_BUILTIN_ORC_V4SI_UNS, P8V_BUILTIN_ORC_V2DI_UNS, P8V_BUILTIN_ORC_V2DI, ALTIVEC_BUILTIN_VXOR_V16QI_UNS, ALTIVEC_BUILTIN_VXOR_V16QI, ALTIVEC_BUILTIN_VXOR_V8HI_UNS, ALTIVEC_BUILTIN_VXOR_V8HI, ALTIVEC_BUILTIN_VXOR_V4SI_UNS, ALTIVEC_BUILTIN_VXOR_V4SI, ALTIVEC_BUILTIN_VXOR_V2DI_UNS, ALTIVEC_BUILTIN_VXOR_V2DI, ALTIVEC_BUILTIN_VXOR_V4SF, ALTIVEC_BUILTIN_VXOR_V2DF, ALTIVEC_BUILTIN_VNOR_V16QI_UNS, ALTIVEC_BUILTIN_VNOR_V16QI, ALTIVEC_BUILTIN_VNOR_V8HI_UNS, ALTIVEC_BUILTIN_VNOR_V8HI, ALTIVEC_BUILTIN_VNOR_V4SI_UNS, ALTIVEC_BUILTIN_VNOR_V4SI, ALTIVEC_BUILTIN_VNOR_V2DI_UNS, ALTIVEC_BUILTIN_VNOR_V2DI, ALTIVEC_BUILTIN_VNOR_V4SF, ALTIVEC_BUILTIN_VNOR_V2DF>: Use new definition names. (builtin_function_type) <ALTIVEC_BUILTIN_VAND_V16QI_UNS, ALTIVEC_BUILTIN_VAND_V8HI_UNS, ALTIVEC_BUILTIN_VAND_V4SI_UNS, ALTIVEC_BUILTIN_VAND_V2DI_UNS, ALTIVEC_BUILTIN_VANDC_V16QI_UNS, ALTIVEC_BUILTIN_VANDC_V8HI_UNS, ALTIVEC_BUILTIN_VANDC_V4SI_UNS, ALTIVEC_BUILTIN_VANDC_V2DI_UNS, ALTIVEC_BUILTIN_VNOR_V16QI_UNS, ALTIVEC_BUILTIN_VNOR_V8HI_UNS, ALTIVEC_BUILTIN_VNOR_V4SI_UNS, ALTIVEC_BUILTIN_VNOR_V2DI_UNS, ALTIVEC_BUILTIN_VOR_V16QI_UNS, ALTIVEC_BUILTIN_VOR_V8HI_UNS, ALTIVEC_BUILTIN_VOR_V4SI_UNS, ALTIVEC_BUILTIN_VOR_V2DI_UNS, ALTIVEC_BUILTIN_VXOR_V16QI_UNS, ALTIVEC_BUILTIN_VXOR_V8HI_UNS, ALTIVEC_BUILTIN_VXOR_V4SI_UNS, ALTIVEC_BUILTIN_VXOR_V2DI_UNS, P8V_BUILTIN_EQV_V16QI_UNS, P8V_BUILTIN_EQV_V8HI_UNS, P8V_BUILTIN_EQV_V4SI_UNS, P8V_BUILTIN_EQV_V2DI_UNS, P8V_BUILTIN_EQV_V1TI_UNS, P8V_BUILTIN_NAND_V16QI_UNS, P8V_BUILTIN_NAND_V8HI_UNS, P8V_BUILTIN_NAND_V4SI_UNS, P8V_BUILTIN_NAND_V2DI_UNS, P8V_BUILTIN_NAND_V1TI_UNS, P8V_BUILTIN_ORC_V16QI_UNS, P8V_BUILTIN_ORC_V8HI_UNS, P8V_BUILTIN_ORC_V4SI_UNS, P8V_BUILTIN_ORC_V2DI_UNS, P8V_BUILTIN_ORC_V1TI_UNS>: Handle unsigned builtins. gcc/testsuite/ PR target/92923 * gcc.target/powerpc/pr92923-1.c: New test. * gcc.target/powerpc/pr92923-2.c: Likewise. From-SVN: r279772
2019-12-30Remove assert in reshape_init_r.Marek Polacek2-1/+4
Asserting !BRACE_ENCLOSED_INITIALIZER_P seems pretty pointless, since that checks for init_list_type_node, and a compound literal won't have that type, nor will we see that type if we just checked that it's something else. * decl.c (reshape_init_r): Remove assert. From-SVN: r279771
2019-12-30decl2.c (delete_sanity): Add location_t parameter and use it throughout.Paolo Carlini15-82/+126
/gcc/cp 2019-12-30 Paolo Carlini <paolo.carlini@oracle.com> * decl2.c (delete_sanity): Add location_t parameter and use it throughout. * init.c (build_vec_delete_1): Likewise. (build_delete): Likewise. (build_vec_delete): Likewise. (perform_target_ctor): Adjust call. (perform_member_init): Likewise. (build_vec_init): Likewise. * decl.c (cxx_maybe_build_cleanup): Likewise. * pt.c (tsubst_copy_and_build): Likewise. * parser.c (cp_parser_delete_expression): Likewise, pass the combined_loc. * cp-tree.h: Update declarations. /libcc1 2019-12-30 Paolo Carlini <paolo.carlini@oracle.com> * libcp1plugin.cc (plugin_build_unary_expr): Update delete_sanity call. /gcc/testsuite 2019-12-30 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/init/delete1.C: Check locations too. * g++.dg/ipa/pr85607.C: Likewise. * g++.dg/warn/Wdelete-incomplete-1.C: Likewise. * g++.dg/warn/delete-non-virtual-dtor.C: Likewise. * g++.dg/warn/incomplete1.C: Likewise. From-SVN: r279768
2019-12-30re PR fortran/91651 ([F03] Implement KIND argument for INDEX)Thomas Koenig2-1/+6
2019-12-30 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/91651 * gfortran.dg/index_3.f90: Fix PR number. From-SVN: r279766
2019-12-30re PR fortran/91651 ([F03] Implement KIND argument for INDEX)Thomas Koenig2-2/+2
2019-12-30 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/91651 Fix PR numbers in ChangeLog. From-SVN: r279765
2019-12-30Remove KIND argument from INDEX so it does not mess up scalarization.Thomas Koenig7-14/+113
2019-12-30 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/91541 * intrinsic.c (add_sym_4ind): New function. (add_functions): Use it for INDEX. (resolve_intrinsic): Also call f1m for INDEX. * intrinsic.h (gfc_resolve_index_func): Adjust prototype to take a gfc_arglist instead of individual arguments. * iresolve.c (gfc_resolve_index_func): Adjust arguments. Remove KIND argument if present, and make sure this is not done twice. * trans-decl.c: Include "intrinsic.h". (gfc_get_extern_function_decl): Special case for resolving INDEX. 2019-12-30 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/91541 * gfortran.dg/index_3.f90: New test. From-SVN: r279763
2019-12-30Catch division by zero errors in array sizes.Thomas Koenig6-4/+59
2019-12-30 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/92961 * gfortran.h (gfc_seen_div0): Add declaration. * arith.h (gfc_seen_div0): Add definition. (eval_intrinsic): For integer division by zero, set gfc_seen_div0. * decl.c (variable_decl): If resolution resp. simplification fails for array spec and a division of zero error has been seen, return MATCH_ERROR. 2019-12-30 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/92961 * gfortran.dg/arith_divide_2.f90: New test. From-SVN: r279762
2019-12-30Daily bump.GCC Administrator1-1/+1
From-SVN: r279761
2019-12-30re PR c++/92745 (Initializing array with vec4 results in compile error)Jakub Jelinek2-0/+6
PR c++/92745 * g++.dg/cpp0x/initlist118.C: Add -Wno-psabi -w to dg-options. From-SVN: r279758
2019-12-29PR c++/88337 - Implement P1327R1: Allow dynamic_cast in constexpr.Marek Polacek21-1/+886
This patch implements <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1327r1.html>. When build_dynamic_cast realizes that a dynamic_cast needs a run-time check, it generates a call to __dynamic_cast -- see dyncast.cc in libsupc++ for its definition. The gist of my approach is to evaluate such a call at compile time. * constexpr.c (cxx_dynamic_cast_fn_p): New function. (extract_obj_from_addr_offset): New function. (get_component_with_type): New function. (cxx_eval_dynamic_cast_fn): New function. (cxx_eval_call_expression): Call cxx_eval_dynamic_cast_fn for a call to __dynamic_cast. (potential_constant_expression_1): Don't give up on cxx_dynamic_cast_fn_p. * rtti.c (build_dynamic_cast_1): When creating a call to __dynamic_cast, use the location of the original expression. * g++.dg/cpp2a/constexpr-dynamic1.C: New test. * g++.dg/cpp2a/constexpr-dynamic10.C: New test. * g++.dg/cpp2a/constexpr-dynamic11.C: New test. * g++.dg/cpp2a/constexpr-dynamic12.C: New test. * g++.dg/cpp2a/constexpr-dynamic13.C: New test. * g++.dg/cpp2a/constexpr-dynamic14.C: New test. * g++.dg/cpp2a/constexpr-dynamic15.C: New test. * g++.dg/cpp2a/constexpr-dynamic16.C: New test. * g++.dg/cpp2a/constexpr-dynamic17.C: New test. * g++.dg/cpp2a/constexpr-dynamic2.C: New test. * g++.dg/cpp2a/constexpr-dynamic3.C: New test. * g++.dg/cpp2a/constexpr-dynamic4.C: New test. * g++.dg/cpp2a/constexpr-dynamic5.C: New test. * g++.dg/cpp2a/constexpr-dynamic6.C: New test. * g++.dg/cpp2a/constexpr-dynamic7.C: New test. * g++.dg/cpp2a/constexpr-dynamic8.C: New test. * g++.dg/cpp2a/constexpr-dynamic9.C: New test. From-SVN: r279755
2019-12-29re PR target/93078 (Missing fma and round functions auto-vectorization with ↵Jakub Jelinek8-25/+96
x86-64 (sse2)) PR target/93078 * config/i386/i386-builtins.c (ix86_builtin_vectorized_function): Remove CASE_CFN_RINT handling. * config/i386/i386-builtin.def (IX86_BUILTIN_RINTPD, IX86_BUILTIN_RINTPS, IX86_BUILTIN_RINTPD256, IX86_BUILTIN_RINTPS256): Remove. * config/i386/sse.md (nearbyint<mode>2, rint<mode>2): New expanders with VF iterator. * gcc.target/i386/sse4_1-pr93078.c: New test. * gcc.target/i386/avx-pr93078.c: New test. * gcc.target/i386/avx512f-pr93078.c: New test. From-SVN: r279754
2019-12-29Unshare DR_STEP before gimplifying itRichard Sandiford4-2/+19
In this testcase we use an unmasked SVE loop with an Advanced SIMD epilogue (because we don't yet support fully-masked downward loops). The main loop uses a gather load for the strided access while the epilogue loop builds the access from scalars instead. In both cases we gimplify expressions based on the DR_STEP and insert them in the loop preheader. The problem was that the gather load code didn't copy the DR_STEP before gimplifying it, meaning that the epilogue loop tried to reuse a result from the (non-dominating) main loop preheader. It looks at first glance like there could be other instances of this too, but this patch just deals with the gather/scatter case. 2019-12-29 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree-vect-stmts.c (vect_get_strided_load_store_ops): Copy DR_STEP before gimplifying it. gcc/testsuite/ * gcc.dg/vect/vect-strided-epilogue-1.c: New test. From-SVN: r279753
2019-12-29Check for a supported comparison when using EXTRACT_LAST_REDUCTIONRichard Sandiford4-0/+34
The EXTRACT_LAST_REDUCTION handling needs to generate a separate comparison instruction that feeds the vector mask argument of the IFN_EXTRACT_LAST call. We weren't checking whether that comparison was supported, leading to an ICE on the testcase. 2019-12-29 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree-vect-stmts.c (vectorizable_condition): For extract-last reductions, check that the target supports the required comparison operation. gcc/testsuite/ * gcc.dg/vect/vect-cond-12.c: New test. From-SVN: r279752
2019-12-29Daily bump.GCC Administrator1-1/+1
From-SVN: r279751
2019-12-28re PR bootstrap/93074 (build FAIL with --enable-offload-targets=nvptx-none)Jakub Jelinek2-0/+12
PR bootstrap/93074 * plugin/cuda/cuda.h (cuDeviceGetName, cuDriverGetVersion): Declare. (cuDeviceTotalMem, cuMemGetInfo): Likewise. Define to *_v2. From-SVN: r279747
2019-12-28Daily bump.GCC Administrator1-1/+1
From-SVN: r279746
2019-12-27[AArch64] Fix typo in V_INT_CONTAINERRichard Sandiford4-1/+22
All VNx2 V_INT_CONTAINER entries should map to VNx2DI. The lower-case version was already correct. 2019-12-27 Richard Sandiford <richard.sandiford@arm.com> gcc/ * config/aarch64/iterators.md (V_INT_CONTAINER): Fix VNx2SF entry. gcc/testsuite/ * gcc.target/aarch64/sve/mixed_size_11.c: New test. From-SVN: r279743
2019-12-27Add missing target check for fully-masked fold-left reductionsRichard Sandiford4-0/+35
The fold-left reduction code has a (rarely-used) fallback that handles cases in which the loop is fully-masked and the target has no native support for the reduction. The fallback includea a VEC_COND_EXPR between the reduction vector and a safe value, so we should check whether that VEC_COND_EXPR is supported. 2019-12-27 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree-vect-loop.c (vectorizable_reduction): Check whether the target supports the required VEC_COND_EXPR operation before allowing the fallback handling of masked fold-left reductions. gcc/testsuite/ * gcc.target/aarch64/sve/mixed_size_10.c: New test. From-SVN: r279742
2019-12-27Daily bump.GCC Administrator1-1/+1
From-SVN: r279739
2019-12-26re PR c++/92438 (Function declaration parsed incorrectly with `-std=c++1z`)Jakub Jelinek4-1/+54
PR c++/92438 * parser.c (cp_parser_constructor_declarator_p): If open paren is followed by RID_ATTRIBUTE, skip over the attribute tokens and try to parse type specifier. * g++.dg/ext/attrib61.C: New test. From-SVN: r279736
2019-12-26Daily bump.GCC Administrator1-1/+1
From-SVN: r279735
2019-12-25Define HAVE_ for math long double functions declared in vxworks headersAlexandre Oliva3-0/+1173
When cross-building for vxworks, test for declarations of long double functions in math.h. We don't normally test for these functions when cross compiling, because link tests don't work, or ever really, but not defining them as available causes replacements to be defined in ways that may cause duplicate definition linker errors if the units defining both the replacement and the actual implementation are brought in because of other symbols. for libstdc++-v3/ChangeLog * crossconfig.m4 (GLIBCXX_CROSSCONFIG) [*-vxworks*]: Define long double functions as available if declared by math.h. (GLIBCXX_CHECK_MATH_DECL, GLIBCXX_CHECK_MATH_DECLS): New. * configure: Rebuild. From-SVN: r279731
2019-12-25Daily bump.GCC Administrator1-1/+1
From-SVN: r279730
2019-12-24rs6000: re-enable web and rnreg with -funroll-loopsJiufu Guo2-4/+16
Previously, limited unrolling was enabled at O2 for powerpc in r278034. At that time, -fweb and -frename-registers were not enabled together with -funroll-loops even for -O3. After that, we notice there are some performance degradations on SPEC2006fp which caused by without web and rnreg. This patch enable -fweb and -frename-registers for -funroll-loops to align original behavior before r278034. gcc/ 2019-12-23 Jiufu Guo <guojiufu@linux.ibm.com> * config/rs6000/rs6000.c (rs6000_option_override_internal): Enable -fweb and -frename-registers with -funroll-loops From-SVN: r279725
2019-12-24re PR go/93020 (Final patches to build gcc-10 on GNU/Hurd)Ian Lance Taylor5-5/+5
PR go/93020 libgo: Hurd portability patches By Svante Signell. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/212409 From-SVN: r279724
2019-12-24Daily bump.GCC Administrator1-1/+1
From-SVN: r279723
2019-12-23Restrict 'c-c++-common/goacc/mdc-1.c' to LP64, LLP64Thomas Schwinge2-1/+6
The tree dump scanning has certain expectations. gcc/testsuite/ * c-c++-common/goacc/mdc-1.c: Restrict to LP64, LLP64. From-SVN: r279720
2019-12-23[C++] Make same_type_p return false for gnu_vector_type_p differences (PR 92789)Richard Sandiford6-37/+83
As Jason pointed out in the review of the C++ gnu_vector_type_p patch: https://gcc.gnu.org/ml/gcc-patches/2019-12/msg00173.html the real fix for the XFAILs in acle/general-c++/gnu_vectors_*.C is to make same_type_p return false for two types if one is gnu_vector_type_p and the other isn't. This patch does that and fixes the fallout. Originally I'd tried to make it so that "X *" and "Y *" are interconvertible whenever X and Y are, and similarly for "X &" and "Y &". That doesn't fall out naturally though, and is different from how -flax-vector-conversions works. The patch therefore accepts all the consequences of making X and Y !same_type_p instead of trying to work around them. 2019-12-23 Richard Sandiford <richard.sandiford@arm.com> gcc/cp/ PR c++/92789 * typeck.c (structural_comptypes): Make sure that two vector types agree on gnu_vector_type_p. gcc/testsuite/ PR c++/92789 * g++.dg/ext/sve-sizeless-2.C (statements): Expect pointer difference and comparisons between GNU and non-GNU types to be rejected. Expect __is_same to be false for such pairs. * g++.target/aarch64/sve/acle/general-c++/gnu_vectors_1.C: Remove XFAILs. Expect conversions between SVE vector pointers and GNU vector pointers to be rejected. Test references. * g++.target/aarch64/sve/acle/general-c++/gnu_vectors_2.C: Likewise. From-SVN: r279717
2019-12-23[C++] Fix ICE for binding lax vector conversions to references (PR 93014)Richard Sandiford5-3/+109
This test: typedef unsigned int v4si __attribute__ ((vector_size(16))); typedef unsigned char v16qi __attribute__ ((vector_size(16))); extern v16qi x; v4si &y = x; ICEs with: a.c:4:11: internal compiler error: in convert_like_real, at cp/call.c:7670 This started with r260780, which had the effect of making lvalue_kind look through VIEW_CONVERT_EXPR in all cases, not just for location wrappers. This also means that: typedef unsigned int v4si __attribute__ ((vector_size(16))); typedef unsigned char v16qi __attribute__ ((vector_size(16))); extern v16qi x; v4si &y = reinterpret_cast<v4si>(x); is now valid despite the result of the cast being an rvalue. The patch attempts to fix that by calling rvalue on the input to the conversion, so that the tree looks the same as for: extern v16qi x; v4si &y = (v4si)x; which is already handled correctly. 2019-12-23 Richard Sandiford <richard.sandiford@arm.com> gcc/cp/ * cvt.c (ocp_convert): Apply rvalue to the source of vector conversions. * typeck.c (build_reinterpret_cast_1): Likewise. gcc/testsuite/ * g++.dg/ext/vector39.C: New test. From-SVN: r279716
2019-12-23Daily bump.GCC Administrator1-1/+1
From-SVN: r279715
2019-12-22Add OpenACC 2.6 `acc_get_property' supportMaciej W. Rozycki23-6/+841
Add generic support for the OpenACC 2.6 `acc_get_property' and `acc_get_property_string' routines, as well as full handlers for the host and the NVPTX offload targets and minimal handlers for the HSA, Intel MIC, and AMD GCN offload targets. Included are C/C++ and Fortran tests that, in particular, print the property values for acc_property_vendor, acc_property_memory, acc_property_free_memory, acc_property_name, and acc_property_driver. The output looks as follows: Vendor: GNU Name: GOMP Total memory: 0 Free memory: 0 Driver: 1.0 with the host driver (where the memory related properties are not supported for the host device and yield 0, conforming to the standard) and output like: Vendor: Nvidia Total memory: 12651462656 Free memory: 12202737664 Name: TITAN V Driver: CUDA Driver 9.1 with the NVPTX driver. 2019-12-22 Maciej W. Rozycki <macro@codesourcery.com> Frederik Harwath <frederik@codesourcery.com> Thomas Schwinge <tschwinge@codesourcery.com> include/ * gomp-constants.h (gomp_device_property): New enum. libgomp/ * libgomp.h (gomp_device_descr): Add `get_property_func' member. * libgomp-plugin.h (gomp_device_property_value): New union. (gomp_device_property_value): New prototype. * openacc.h (acc_device_t): Add `acc_device_current' enumeration constant. (acc_device_property_t): New enum. (acc_get_property, acc_get_property_string): New prototypes. * oacc-init.c (acc_get_device_type): Also assert that result is not `acc_device_current'. (get_property_any, acc_get_property, acc_get_property_string): New functions. * openacc.f90 (openacc_kinds): Add `acc_device_current' and `acc_property_memory', `acc_property_free_memory', `acc_property_name', `acc_property_vendor' and `acc_property_driver' constants. Add `acc_device_property' data type. (openacc_internal): Add `acc_get_property' and `acc_get_property_string' interfaces. Add `acc_get_property_h', `acc_get_property_string_h', `acc_get_property_l' and `acc_get_property_string_l'. * oacc-host.c (host_get_property): New function. (host_dispatch): Wire it. * target.c (gomp_load_plugin_for_device): Handle `get_property'. * libgomp.map (OACC_2.6): Add `acc_get_property', `acc_get_property_h_', `acc_get_property_string' and `acc_get_property_string_h_' symbols. * libgomp.texi (OpenACC Runtime Library Routines): Add `acc_get_property'. (acc_get_property): New node. * plugin/plugin-gcn.c (GOMP_OFFLOAD_get_property): New function (stub). * plugin/plugin-hsa.c (GOMP_OFFLOAD_get_property): New function. * plugin/plugin-nvptx.c (CUDA_CALLS): Add `cuDeviceGetName', `cuDeviceTotalMem', `cuDriverGetVersion' and `cuMemGetInfo' calls. (GOMP_OFFLOAD_get_property): New function. (struct ptx_device): Add new field "name". (cuda_driver_version_s): Add new static variable ... (nvptx_init): ... and init from here. * testsuite/libgomp.oacc-c-c++-common/acc_get_property.c: New test. * testsuite/libgomp.oacc-c-c++-common/acc_get_property-2.c: New test. * testsuite/libgomp.oacc-c-c++-common/acc_get_property-3.c: New test. * testsuite/libgomp.oacc-c-c++-common/acc_get_property-aux.c: New file with test helper functions. * testsuite/libgomp.oacc-fortran/acc_get_property.f90: New test. liboffloadmic/ * plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_get_property): New function. Reviewed-by: Thomas Schwinge <thomas@codesourcery.com> Co-Authored-By: Frederik Harwath <frederik@codesourcery.com> Co-Authored-By: Thomas Schwinge <tschwinge@codesourcery.com> From-SVN: r279710
2019-12-21Restrict some aarch64 testcases to little-endianAndrew Pinski3-2/+12
2019-12-21 Andrew Pinski <apinski@marvell.com> PR testsuite/92998 * gcc.target/aarch64/sve/acle/general/dupq_1.c: Restrict to aarch64_little_endian only. * gcc.target/aarch64/torture/simd-abi-8.c: Likewise. From-SVN: r279709
2019-12-22libgomp/test: Fix compilation for build sysrootMaciej W. Rozycki2-0/+7
Fix a problem with the libgomp testsuite using a method to determine the compiler to use resulting in the tool being different from one the library has been built with, and causing a catastrophic failure from the lack of a suitable `--sysroot=' option where the `--with-build-sysroot=' configuration option has been used to build the compiler resulting in the inability to link executables. Address this problem by defining the compiler to use, via the GCC_UNDER_TEST TCL variable, set in the DejaGNU configuration file from $CC by autoconf, which will have all the required options set for the target compiler to build executables in the environment configured, removing failures like: .../bin/riscv64-linux-gnu-ld: cannot find crt1.o: No such file or directory .../bin/riscv64-linux-gnu-ld: cannot find -lm .../bin/riscv64-linux-gnu-ld: cannot find -lpthread .../bin/riscv64-linux-gnu-ld: cannot find -lc .../bin/riscv64-linux-gnu-ld: cannot find -latomic collect2: error: ld returned 1 exit status compiler exited with status 1 FAIL: libgomp.c/../libgomp.c-c++-common/atomic-18.c (test for excess errors) Excess errors: .../bin/riscv64-linux-gnu-ld: cannot find crt1.o: No such file or directory .../bin/riscv64-linux-gnu-ld: cannot find -lm .../bin/riscv64-linux-gnu-ld: cannot find -lpthread .../bin/riscv64-linux-gnu-ld: cannot find -lc .../bin/riscv64-linux-gnu-ld: cannot find -latomic UNRESOLVED: libgomp.c/../libgomp.c-c++-common/atomic-18.c compilation failed to produce executable and bringing overall test results for the `riscv64-linux-gnu' target (here with the `x86_64-linux-gnu' host and RISC-V QEMU in the Linux user emulation mode as the target board) from: === libgomp Summary === # of expected passes 44 # of unexpected failures 3274 # of unresolved testcases 3241 # of unsupported tests 548 to: === libgomp Summary === # of expected passes 6834 # of unexpected failures 4 # of expected failures 4 # of unsupported tests 518 libgomp/ * testsuite/libgomp-test-support.exp.in (GCC_UNDER_TEST): New variable. From-SVN: r279708
2019-12-22* doc/invoke.texi (-flto): Use "compile time" as a noun.Gerald Pfeifer2-1/+5
From-SVN: r279707
2019-12-22testsuite: Fix run-time tracking down of `libgcc_s'Maciej W. Rozycki2-14/+36
Fix a catastrophic libgo testsuite failure in cross-compilation where the shared `libgcc_s' library cannot be found by the loader at run time in build-tree testing and consequently all test cases fail the execution stage, giving output (here with the `x86_64-linux-gnu' host and the `riscv64-linux-gnu' target, with RISC-V QEMU in the Linux user emulation mode as the target board) like: spawn qemu-riscv64 -E LD_LIBRARY_PATH=.:.../riscv64-linux-gnu/lib64/lp64d/libgo/.libs ./a.exe ./a.exe: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory FAIL: archive/tar To do so rework `gcc-set-multilib-library-path' so as not to rely on the `rootme' TCL variable to have been preset in testsuite invocation, which only works for the GCC test suites and not for library test suites, and also use `remote_exec host' rather than `exec' to invoke the compiler in determination of `libgcc_s' locations, so that the solution works in remote testing as well while also avoiding the hardcoded limit of the executable's path length imposed by `exec'. This is based on an observation that the multilib root directory can be determined by stripping out the multilib directory in effect as printed with the `-print-multi-directory' option from the path produced by the `-print-file-name=' option. And then individual full multilib paths can be assembled for the other multilibs by appending their respective multilib directories to the multilib root directory. Unlike with the old solution the full multilib paths are not checked for the presence of the shared `libgcc_s' library there, but that is supposed to be harmless. Also the full multilib path for the multilib used with the compiler used for testing will now come first, which should reduce run-time processing in the usual case. With this change in place test output instead looks like: spawn qemu-riscv64 -E LD_LIBRARY_PATH=.:.../riscv64-linux-gnu/lib64/lp64d/libgo/.libs:..././gcc/lib64/lp64d:..././gcc/.:..././gcc/lib32/ilp32:..././gcc/lib32/ilp32d:..././gcc/lib64/lp64 ./a.exe PASS PASS: archive/tar No summary comparison, because the libgo testsuite does not provide one in this configuration for some reason, however this change improves overall results from 0 PASSes and 159 FAILs to 133 PASSes and 26 FAILs. gcc/testsuite/ * lib/gcc-defs.exp (gcc-set-multilib-library-path): Use `-print-file-name=' to determine the multilib root directory. Use `remote_exec host' rather than `exec' to invoke the compiler. From-SVN: r279706
2019-12-22Daily bump.GCC Administrator1-1/+1
From-SVN: r279705
2019-12-22libada: Fix shared library installation with `--disable-libada'Maciej W. Rozycki2-0/+10
Provide a default value of $(toolexeclibdir) for $(ADA_RTL_DSO_DIR), so that in a `--disable-libada' configuration `make install' places shared gnatlib libraries, built with `make -C gcc gnatlib-shared', in their intended version-specific location, fixing a commit r276424 ("libada: Respect `--enable-version-specific-runtime-libs'") regression. gcc/ada/ * gcc-interface/Makefile.in (toolexeclibdir): New variable. From-SVN: r279702