aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2020-07-27mmix: Don't turn off .hidden support.Hans-Peter Nilsson2-12/+0
In 2012 e2769e908a915ebbc/r192344, I added the following lines, that I now delete. I've changed my mind: ELF-related targets based on gas, that support only static linking, have .hidden "for free", regardless of the visibility of the hidden object in the linked executable. No regressions for mmix-knuth-mmixware and "fixes": FAIL: gcc.dg/torture/pr94947-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects (test for excess errors) Excess errors: lto1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] ...a warning which is emitted for "all" LTO tests (of which most have warnings filtered out); LTO "thinks" all supported targets have .hidden support. gcc: * configure.ac (out-of-tree linker .hidden support): Don't turn off for mmix-knuth-mmixware. * configure: Regenerate.
2020-07-26c++: Add testcase for [PR79504]Patrick Palka1-0/+19
We successfully compile this testcase ever since r8-5270. gcc/testsuite/ChangeLog: PR c++/79504 * g++.dg/cpp0x/decltype79.C: New test.
2020-07-26rs6000: add option -mblock-ops-unaligned-vsxAaron Sawdey3-0/+22
This option is mostly being added to provide -mno-block-ops-unaligned-vsx. The default is set the same as -mefficient-unaligned-vsx. This option will control the use of unaligned VSX loads/stores in the inline expansion of memcpy() and memmove(). The use case for this would be if you're compiling code that is doing a memcpy to memory mapped device memory that is cache-inhibited. On some powerpc processors this requires the unaligned vsx ops to be emulated by the kernel which is very slow. gcc/ChangeLog: * config/rs6000/rs6000.c (rs6000_option_override_internal): Set the default value for -mblock-ops-unaligned-vsx. * config/rs6000/rs6000.opt: Add -mblock-ops-unaligned-vsx. * doc/invoke.texi: Document -mblock-ops-unaligned-vsx.
2020-07-26gcc.dg/tree-ssa/forwprop-36.c: Adjust for mmixHans-Peter Nilsson1-1/+2
The label of interest here is "b.0_2" for e.g. x86_64-pc-linux-gnu but "b::1_2" for mmix-knuth-mmixware. The test seems to be of some interest for mmix (hey, gcc open-coded 128-bit integer support behind my back!) so I didn't want to just disable it. I also didn't want to obscure the matching pattern by generalizing it, so instead I added a separate matching pattern. gcc/testsuite: * gcc.dg/tree-ssa/forwprop-36.c: Adjust for mmix.
2020-07-26gcc.dg/torture/pr59330.c: Disable for mmixHans-Peter Nilsson1-0/+1
With the dejagnu status-wrapper, there's a reference to write in each executable, which for mmix in newlib has a reference to a variable defined in open, which for mmix in newlib has a reference to sprintf (oops!) and the dependency-chain goes on; ad finitum there's a reference to malloc, which in default newlib is colocated with free; the same file newlib/libc/stdlib/malloc.c. Not being compiled with -ffunction-sections, they're emitted in the same section (.text) and thus inseparable: you can't override just one of them as in this test, or else you'll get: <X>/pre/mmix/bin/ld: <X>/gccobj/mmix/./newlib/libc.a(lib_a-malloc.o): in function `free': <X>/gcc/newlib/libc/stdlib/malloc.c:169: multiple definition of `free'; /tmp/ccvRA0zb.o:(.text+0x0): first defined here collect2: error: ld returned 1 exit status compiler exited with status 1 FAIL: gcc.dg/torture/pr59330.c -O0 (test for excess errors) I'm using a dg-skip-if here instead of starting a hardly scalable dg-do target selector. I'm not keying on effective-target unwrapped because the dependency-chain is target-specific rather than dejagnu status-wrapper-specific. gcc/testsuite: * gcc.dg/torture/pr59330.c: Disable for mmix.
2020-07-26Daily bump.GCC Administrator4-1/+27
2020-07-25config/mmix/mmix.c (TARGET_ASM_OUTPUT_IDENT): Override.Hans-Peter Nilsson1-0/+3
Funny that default_asm_output_ident_directive isn't the default... Anyway, since dot-pseudos like .ident are treated as comments by mmixal, there's nothing lost compatibilitywise by supporting it. If mmix-knuth-mmixware had included elfos.h this'd have been the default. There might be enough reason to do that; relocatable objects are ELF but (by default) links to produce mmo. Fixes c-c++-common/ident-1b.c and 2b in C and C++ testing. Committed. gcc: * config/mmix/mmix.c (TARGET_ASM_OUTPUT_IDENT): Override the default with default_asm_output_ident_directive.
2020-07-25C++, testsuite: Adjust pure-virtual1.C options for Darwin.Iain Sandoe1-0/+1
Darwin's static linker expects, by default, that all linkage will be satisfied (even for weak items). This allows the two-level namespace to work even for weak cases. However, there's an option to make it behave in a similar manner to ELF. This is needed for the pure-virtual1.C testcase to pass on Darwin. gcc/testsuite/ChangeLog: * g++.dg/abi/pure-virtual1.C: Add dynamic_lookup option for Darwin.
2020-07-25Fix PR c++/96310 - Ignoring -Wnonnull via pragma gcc diagnostics still ↵Martin Sebor2-2/+22
produces an unwanted note. gcc/c-family/ChangeLog: PR c++/96310 * c-common.c (check_nonnull_arg): Print note only when warning was issued.
2020-07-25amdgcn: Enable TImodeAndrew Stubbs1-0/+15
This enables types __int128 et al for move, add, subtract, and logical operations. At least shift, rotate, multiple, divide, and modulus are broken so we can expect some test failures. This is required now because libgomp no longer builds without __int128. An additional patch will be required to unbreak the libgfortran build. gcc/ChangeLog: * config/gcn/gcn.c (gcn_scalar_mode_supported_p): New function. (TARGET_SCALAR_MODE_SUPPORTED_P): New define.
2020-07-25Daily bump.GCC Administrator3-1/+131
2020-07-24aix: Support GCC64 for AIX 7.1.David Edelsohn4-52/+79
gcc/ChangeLog: 2020-07-24 David Edelsohn <dje.gcc@gmail.com> Clement Chigot <clement.chigot@atos.net> * config.gcc (powerpc-ibm-aix7.1): Use t-aix64 and biarch64 for cpu_is_64bit. * config/rs6000/aix71.h (ASM_SPEC): Remove aix64 option. (ASM_SPEC32): New. (ASM_SPEC64): New. (ASM_CPU_SPEC): Remove vsx and altivec options. (CPP_SPEC_COMMON): Rename from CPP_SPEC. (CPP_SPEC32): New. (CPP_SPEC64): New. (CPLUSPLUS_CPP_SPEC): Rename to CPLUSPLUS_CPP_SPEC_COMMON.. (TARGET_DEFAULT): Use 64 bit mask if BIARCH. (LIB_SPEC_COMMON): Rename from LIB_SPEC. (LIB_SPEC32): New. (LIB_SPEC64): New. (LINK_SPEC_COMMON): Rename from LINK_SPEC. (LINK_SPEC32): New. (LINK_SPEC64): New. (STARTFILE_SPEC): Add 64 bit version of crtcxa and crtdbase. (ASM_SPEC): Define 32 and 64 bit alternatives using DEFAULT_ARCH64_P. (CPP_SPEC): Same. (CPLUSPLUS_CPP_SPEC): Same. (LIB_SPEC): Same. (LINK_SPEC): Same. (SUBTARGET_EXTRA_SPECS): Add new 32/64 specs. * config/rs6000/aix72.h (TARGET_DEFAULT): Use 64 bit mask if BIARCH. * config/rs6000/defaultaix64.h: Delete.
2020-07-24rs6000: Remove -mpower10 option (PR95907)Segher Boessenkool2-2/+8
The only way to enable or disable Power10 insns (ISA 3.1 insns) should be via the -mcpu= switch. This patch disables the -mpower10 options the same way the -mdirect-move switch is neutered already. That is not an ideal way, but it works, it is not the first, and doing it properly is more work, and will happen later. 2020-07-24 Segher Boessenkool <segher@kernel.crashing.org> * config/rs6000/rs6000.opt: Delete -mpower10. gcc/testsuite/ * gcc.target/powerpc/pr95907.c: New.
2020-07-25c-c++-common/pr56493.c: Allow ":" in label, for mmix.Hans-Peter Nilsson1-1/+1
No dots in labels for MMIX: internal labels instead contain ":". gcc/testsuite: * c-c++-common/pr56493.c: Allow ":" in label, for mmix.
2020-07-24testsuite: Adjust patchable_function tests for mmix.Hans-Peter Nilsson3-3/+3
There's no reason anyone would want to use the "patchable function" feature for MMIX and also no reason to exclude those tests. For MMIX, the NOP equivalent is SWYM ("swymming" is a healthy exercise). Text-wise, making the tests pass by adjusting the regexp, is shorter, and it seems unlikely to both appear as a mnemonic for other targets *and* being emitted in uppercase. gcc/testsuite: * c-c++-common/patchable_function_entry-decl.c, c-c++-common/patchable_function_entry-default.c, c-c++-common/patchable_function_entry-definition.c: Adjust for mmix.
2020-07-24Add testcase to show kernel issue got fixed by pr95237 [PR96192]Sunil K Pandey1-0/+16
This test case, extracted from PR 95645, was failing because alignment of local long long variable got lowered from 8 bytes to 4 bytes in adjust alignment pass, which triggered assert failure. This test case passes now because PR 95237 fix only allows lowering of alignment of local variables in the front end. As a result, alignment of local long long variable no longer gets lowered in adjust alignment pass. gcc/testsuite/ChangeLog: PR target/96192 * c-c++-common/pr96192-1.c: New test.
2020-07-24add offload target to testname for pass/fail messageAlexandre Oliva1-2/+15
Offload tests that scan dump files may run multiple times, once per offload target, but the test result messages do not mention the offload target, so we may seem to have repeated results. Fixed by modifying the test name so that it contains the offload target name. Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com> for gcc/testsuite/ChangeLog * lib/scanoffload.exp (scoff-testname, scoff-adjust): New. (scoff): Call them.
2020-07-24revamp intelmic-mkoffload aux dump namesAlexandre Oliva1-10/+62
Rework intelmic-mkoffload into the new aux and dump file naming semantics. Obey -save-temps. Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com> for gcc/ChangeLog * config/i386/intelmic-mkoffload.c (generate_target_descr_file): Use dumppfx for save_temps files. Pass -dumpbase et al down to the compiler. (generate_target_offloadend_file): Likewise. (generate_host_descr_file): Likewise. (prepare_target_image): Likewise. Move out_obj_filename setting... (main): ... here. Detect -dumpbase, set dumppfx too.
2020-07-24[PR96230] some -dumpbase-ext fixesAlexandre Oliva2-7/+31
The initial bug report was that compiling (-c) with -dumpbase "" -dumpbase-ext .<ext> crashes the driver. The verification of -dumpbase-ext against -dumpbase doesn't cover the case in which -dumpbase activates backward-compatibility mode. I added a test for that, and for -dumpbase-ext without -dumpbase, trying to make it work in a sensible way, as if applied to the default -dumpbase for each file. It turned out that this made for too much complexity in dealing with suffixes derived from input filenames, so I gave that up and returned to discarding -dumpbase-ext as documented, ending up with a change identical to that in the original bug report. I also thought I caught an off-by-one error in the initial verification, that caused dumpbase_ext to be discarded if it was identical to the specified dumpbase, but that turned out to be intentional as well, so I put in comments and a test to reflect it. Finally, an earlier version of the newly-added tests used "$var.ext" in an expected output list, which showed me the handling of string expansion was incorrect. Reworked the expr into an eval to make that work, and, absent any reliance on post-eval adjustments to so-expanded output names, I arranged for the adjustments to be skipped after eval. Co-Authored-By: "Zhanghaijian (A)" <z.zhanghaijian@huawei.com> for gcc/ChangeLog PR driver/96230 * gcc.c (process_command): Adjust and document conditions to reset dumpbase_ext. for gcc/testsuite/ChangeLog PR driver/96230 * gcc.misc-tests/outputs.exp: Add tests with -dumpbase-ext, with identical -dumpbase, with -dumpbase "", and without any -dumpbase. (outest): Fix "" expansion in expected outputs, skip adjustments.
2020-07-24[PR95720] protect gluefile and wrap_flags with -Wl tooAlexandre Oliva2-29/+40
The testglue object file gets interpreted as another input file, changing the dump and aux output names in GCC unless it is protected by -Wl, like board file-named extra inputs. Refactor the code that modifies the board settings so that it can be used to modify regular variables as well, and do so. for gcc/testsuite/ChangeLog PR testsuite/95720 * lib/gcc-defs.exp (gcc_adjust_linker_flags_list): Split out of... (gcc_adjust_linker_flags): ... this. Protect gluefile and wrap_flags. * gcc.misc-tests/outputs.exp: Use gcc_adjust_linker_flags_list.
2020-07-24PR 93567, G edit descriptor uses E instead of F editing in rounding mode UP.Dominique d'Humieres1-1/+25
The switch between FMT_E and FMT_F is based on the absolute value. Set r=0 for rounding toward zero and r = 1 otherwise. If (exp_d - m) == 1 there is no rounding needed. libgfortran/ChangeLog: PR fortran/93567 * io/write_float.def (determine_en_precision): Fix switch between FMT_E and FMT_F. gcc/testsuite/ChangeLog: PR fortran/93567 * gfortran.dg/round_3.f08: Add test cases.
2020-07-24PR 93592 - Invalid UP/DOWN rounding with EN descriptor.Dominique d'Humieres5-4/+742
The fix is obvious (I have added a comment). The tests are probably an overkill, but it does not hurt. libgfortran/ChangeLog: PR fortran/93592 * io/write_float.def (build_float_string): Do not reset nbefore for FMT_F and FMT_EN. gcc/testsuite/ChangeLog: PR fortran/93592 * gfortran.dg/fmt_en.f90: Adjust test. * gfortran.dg/fmt_en_rd.f90: New test. * gfortran.dg/fmt_en_rn.f90: New test. * gfortran.dg/fmt_en_ru.f90: New test. * gfortran.dg/fmt_en_rz.f90: New test.
2020-07-24c++: Add testcase for [PR81339]Patrick Palka1-0/+24
We correctly reject this testcase since r11-434, i.e. since the fix for PR c++/57943. gcc/testsuite/ChangeLog: PR c++/81339 * g++.dg/cpp0x/decltype78.C: New test.
2020-07-24iDefine TARGET_OFFLOAD_OPTIONS for AArch64Matthias Klose1-0/+13
2020-07-24 Matthias Klose <doko@ubuntu.com> * config/aarch64/aarch64.c (+aarch64_offload_options, TARGET_OFFLOAD_OPTIONS): New.
2020-07-24i386: Emit mfence_sse2 for -Os [PR95750]Uros Bizjak1-1/+2
2020-07-24 Uroš Bizjak <ubizjak@gmail.com> gcc/ChangeLog: PR target/95750 * config/i386/sync.md (mmem_thread_fence): Emit mfence_sse2 for -Os.
2020-07-24[testsuite] Fix TCL syntax error in 'scan-dump-dem-not'Thomas Schwinge1-1/+1
ERROR: [...]: error executing dg-final: missing close-bracket Bug introduced in commit 2ef1bce664881cd59dac7db6c3f3b5709d858bfe (r188996), long ago. gcc/testsuite/ * lib/scandump.exp (scan-dump-dem-not): Fix TCL syntax error.
2020-07-23Restrict PR middle-end/95886 x86 test to !ia32H.J. Lu1-3/+2
Since gcc.target/i386/memcpy-pr95886.c requires 64-bit register, restrict it to !ia32. PR middle-end/95886 * gcc.target/i386/memcpy-pr95886.c: Restrict test to !ia32.
2020-07-24Daily bump.GCC Administrator5-1/+126
2020-07-23libgo: add AIX FAT libraries supportClément Chigot1-1/+1
AIX-style libraries contains both 32 and 64 bit shared objects. This patch follows the adding of FAT libraries support in other gcc libraries (libgcc, listdc++, etc). Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/242957
2020-07-23Restrict test to LP64.Martin Sebor1-1/+2
gcc/testsuite/ChangeLog: PR testsuite/95886 * gcc.target/i386/memcpy-pr95886.c: Restrict test to LP64.
2020-07-23Resolve regression rtl-optimization/96298. Sorry for the breakage.Roger Sayle1-1/+0
2020-07-23 Roger Sayle <roger@nextmovesoftware.com> gcc/ChangeLog PR rtl-optimization/96298 * simplify-rtx.c (simplify_binary_operation_1) [XOR]: Xor doesn't distribute over xor, so (a^b)^(c^b) is not the same as (a^c)^b.
2020-07-23OpenMP: Support 'lastprivate (conditional:' in FortranTobias Burnus8-8/+304
gcc/fortran/ChangeLog: * gfortran.h (gfc_omp_namelist): Add lastprivate_conditional. * openmp.c (gfc_match_omp_clauses): Handle 'conditional:' modifier of 'lastprivate'. * trans-openmp.c (gfc_omp_clause_default_ctor): Don't assert on OMP_CLAUSE__CONDTEMP_ and other OMP_*TEMP_. (gfc_trans_omp_variable_list): Handle lastprivate_conditional. gcc/testsuite/ChangeLog: * gfortran.dg/gomp/lastprivate-conditional-1.f90: New test. * gfortran.dg/gomp/lastprivate-conditional-2.f90: New test. * gfortran.dg/gomp/lastprivate-conditional-3.f90: New test. * gfortran.dg/gomp/lastprivate-conditional-4.f90: New test. * gfortran.dg/gomp/lastprivate-conditional-5.f90: New test.
2020-07-23[Ada] Stub CUDA_Execute and CUDA_Global pragmasArnaud Charlet9-21/+221
This commit adds CUDA_Execute and CUDA_Global to the list of allowed pragmas. It also implements basic validation of said pragmas. gcc/ada/ * aspects.ads: Declare CUDA_Global as aspect. * einfo.ads: Use Flag118 for the Is_CUDA_Kernel flag. (Set_Is_CUDA_Kernel): New function. (Is_CUDA_Kernel): New function. * einfo.adb (Set_Is_CUDA_Kernel): New function. (Is_CUDA_Kernel): New function. * par-prag.adb (Prag): Ignore Pragma_CUDA_Execute and Pragma_CUDA_global. * rtsfind.ads: Define CUDA.Driver_Types.Stream_T and CUDA.Vector_Types.Dim3 entities * rtsfind.adb: Define CUDA_Descendant subtype. (Get_Unit_Name): Handle CUDA_Descendant packages. * sem_prag.ads: Mark CUDA_Global as aspect-specifying pragma. * sem_prag.adb (Analyze_Pragma): Validate Pragma_CUDA_Execute and Pragma_CUDA_Global. * snames.ads-tmpl: Define Name_CUDA_Execute and Name_CUDA_Global.
2020-07-23[Ada] Ada2020: AI12-0027 Access values and unaliased componentArnaud Charlet7-249/+335
Access values should never designate unaliased components. This new feature is documented in AI12-0027-1. gcc/ada/ * sem_ch13.ads (Same_Representation): Renamed as Has_Compatible_Representation because now the order of the arguments are taken into account; its formals are also renamed as Target_Type and Operand_Type. * sem_ch13.adb (Same_Representation): Renamed and moved to place the routine in alphabetic order. * sem_attr.adb (Prefix_With_Safe_Accessibility_Level): New subprogram. (Resolve_Attribute): Check that the prefix of attribute Access does not have a value conversion of an array type. * sem_res.adb (Resolve_Actuals): Remove restrictive check on view conversions which required matching value of Has_Aliased_Components of formals and actuals. * exp_ch4.adb (Handle_Changed_Representation): Update call to Same_Representation. (Expand_N_Type_Conversion): Update call to Same_Representation. * exp_ch5.adb (Change_Of_Representation): Update call to Same_Representation. * exp_ch6.adb (Add_Call_By_Copy_Code): Update call to Same_Representation. (Expand_Actuals): Update call to Same_Representation. (Expand_Call_Helper): Update call to Same_Representation.
2020-07-23gcov-tool: Fix merging of different endian coverage data [PR96267]Dong JianQiang1-1/+1
2020-07-21 Dong JianQiang <dongjianqiang2@huawei.com> gcc/ChangeLog: PR gcov-profile/96267 * gcov-io.c (gcov_open): enable if IN_GCOV_TOOL.
2020-07-23libomp: Add omp_depend_kind to omp_lib.{f90,h}Tobias Burnus1-0/+1
gcc/fortran/ChangeLog: * intrinsic.texi (OMP_LIB_KINDS): Add omp_depend_kind. libgomp/ChangeLog: * configure.ac: Add OMP_DEPEND_KIND and OMP_INT128_SIZE. * libgomp_f.h.in (omp_check_defines): Check whether sizeof of determined Fortran kind and C typedef match. * omp_lib.f90.in: Add omp_depened_kind. * omp_lib.h.in: Likewise; fix omp_alloctrait_key_kind. * configure: Regenerate. * Makefile.in: Regenerate. * testsuite/Makefile.in: Regenerate.
2020-07-23[Ada] Add push/pop capability in OutputArnaud Charlet2-0/+38
Add the capability to use the Write_* procedures in an environment where you want to write debugging info but still use them to write to other files (such a C source files). gcc/ada/ * output.ads (Push_Output, Pop_Output): New procedures. * output.adb (FD_Array, FD_Stack, FD_Stack_Idx): New type and vars. (Push_Output, Pop_Output): New procedures.
2020-07-23rs6000: Rename function adjust_vectorization_costKewen Lin1-3/+3
This patch is to rename the existing function adjust_vectorization_cost to rs6000_adjust_vect_cost_per_stmt, to avoid some confusion. gcc/ChangeLog: * config/rs6000/rs6000.c (adjust_vectorization_cost): Renamed to ... (rs6000_adjust_vect_cost_per_stmt): ... here. (rs6000_add_stmt_cost): Rename adjust_vectorization_cost to rs6000_adjust_vect_cost_per_stmt.
2020-07-23ivopts: Handle vector with length IFNsKewen Lin1-0/+4
This patch is to handle vector with length internal functions IFN_LEN_LOAD and IFN_LEN_STORE in IVOPTS. gcc/ChangeLog: * tree-ssa-loop-ivopts.c (get_mem_type_for_internal_fn): Handle IFN_LEN_LOAD and IFN_LEN_STORE. (get_alias_ptr_type_for_ptr_address): Likewise.
2020-07-23OpenMP: Update gcc/fortran/*.texiTobias Burnus2-8/+92
gcc/fortran/ChangeLog: * gfortran.texi (Standards): Update URL; state that OpenMP 4.5 is supported and 5.0 is partially. * intrinsic.texi (OpenMP Modules): Refer also to OpenMP 5.0; (OMP_LIB): Add missing derived type and new named constants.
2020-07-23PR target/96260 - KASAN should work even back-end not porting anything.Kito Cheng5-2/+40
- Most KASAN function don't need any porting anything in back-end except asan stack protection. - However kernel will given shadow offset when enable asan stack protection, so eveything in KASAN can work if shadow offset is given. - Verified with x86 and risc-v. - Verified with RISC-V linux kernel. gcc/ChangeLog: PR target/96260 * asan.c (asan_shadow_offset_set_p): New. * asan.h (asan_shadow_offset_set_p): Ditto. * toplev.c (process_options): Allow -fsanitize=kernel-address even TARGET_ASAN_SHADOW_OFFSET not implemented, only check when asan stack protection is enabled. gcc/testsuite/ChangeLog: PR target/96260 * gcc.target/riscv/pr91441.c: Update warning message. * gcc.target/riscv/pr96260.c: New.
2020-07-23c-c++-common/builtin-has-attribute-4.c: Require visibility.Hans-Peter Nilsson1-0/+1
Another missed attribute-visibility-requirement, causing a failure for e.g. mmix-knuth-mmixware. Committed as obvious. gcc/testsuite: * c-c++-common/builtin-has-attribute-4.c: Require visibility.
2020-07-23Daily bump.GCC Administrator7-1/+164
2020-07-22OpenMP: Support 'if (simd:/cancel:' in FortranTobias Burnus7-10/+229
gcc/fortran/ChangeLog: * gfortran.h (enum gfc_omp_if_kind): Add OMP_IF_CANCEL and OMP_IF_SIMD. * openmp.c (OMP_SIMD_CLAUSES): Add OMP_CLAUSE_IF. (gfc_match_omp_clauses, resolve_omp_clauses): Handle 'if (simd/cancel:'. * dump-parse-tree.c (show_omp_clauses): Likewise. * trans-openmp.c (gfc_trans_omp_clauses, gfc_trans_omp_cancel, (gfc_split_omp_clauses): Likewise. gcc/testsuite/ChangeLog: * gfortran.dg/gomp/cancel-2.f90: New test. * gfortran.dg/gomp/cancel-3.f90: New test. * gfortran.dg/gomp/if-1.f90: New test.
2020-07-22rs6000: __builtin_mma_disassemble_acc() doesn't store elements correctly in ↵Peter Bergner3-13/+14
LE mode PR96236 shows a problem where we don't correctly store our 512-bit accumulators correctly in little-endian mode. The patch below detects when we're doing a little-endian memory access and stores to the correct memory locations. 2020-07-22 Peter Bergner <bergner@linux.ibm.com> gcc/ PR target/96236 * config/rs6000/rs6000-call.c (rs6000_gimple_fold_mma_builtin): Handle little-endian memory ordering. gcc/testsuite/ PR target/96236 * gcc.target/powerpc/mma-double-test.c: Update storing results for correct little-endian ordering. * gcc.target/powerpc/mma-single-test.c: Likewise.
2020-07-22c++: Don't add enums to class's decl_listNathan Sidwell1-5/+8
We don't need to add CONST_DECLs to a template decl's decl list. Also made the code flow a bit clearer. gcc/cp/ * class.c (maybe_add_class_template_decl_list): Don't add CONST_DECLs.
2020-07-22dump: filenames containing -Nathan Sidwell1-1/+1
I discovered the dump machinery would get confused by filenames containing '-'. Fixed thusly. gcc/ * dumpfile.c (parse_dump_option): Deal with filenames containing '-'
2020-07-22c++: structural_comptypes additionNathan Sidwell1-9/+15
I had to debug structural_comptypes, and its complex if conditions and tail calling of same_type_p made that hard. I'd hope we can turn the eqivalent of return boolean_fn () ? true : false; into a tail call of the boolean. We also were not dealing with TYPEOF_TYPE. gcc/cp/ * typeck.c (structural_comptypes): [DECLTYPE_TYPE] break apart complex if. [UNDERLYING_TYPE]: Use an if. [TYPEOF_TYPE]: New.
2020-07-22c++: More cleanups for modern C++Nathan Sidwell3-58/+39
Here are some more places where we can declare variables at the assignment point, rather than use C89. Also, let's name our variables by what they contain -- the register allocator is perfectly able to track liveness for us. gcc/cp/ * decl.c (decls_match): Move variables into scopes they're needed in. (duplicate_decls): Use STRIP_TEMPLATE. (build_typename_type): Move var decls to their assignments. (begin_function_body): Likewise. * decl2.c (get_guard): Likewise. (mark_used): Use true for truthiness. * error.c (dump_aggr_type): Hold the decl in a var called 'decl', not 'name'.
2020-07-22c++: Shrink lambda-exprNathan Sidwell1-2/+2
I noticed the default capture mode and the discriminator both used ints. That seems excessive. This shrinks them to 8 bits and 16 bits respectively. I suppose the discriminator could use the remaining 24 bits of an int allocation unit, if we're worried about more that 64K lambdas per function. I know, users are strange :) On a 64 bit system this saves 64 bits, because we also had 32 bits of padding added. gcc/cp/ * cp-tree.h (struct tree_lambda_expr): Shrink default_capture_mode & discriminator.