aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2020-05-28Finish prior patchJeff Law1-8/+0
* config/h8300/logical.md (bclrhi_msx): Remove pattern.
2020-05-28Fix incorrect code generation with bit insns on H8/SX.Jeff Law1-19/+17
* config/h8300/logical.md (HImode H8/SX bit-and splitter): Don't make a nonzero adjustment to the memory offset. (b<ior,xor>hi_msx): Turn into a splitter.
2020-05-28Fix off-by-one error in previous commitEric Botcazou1-2/+2
The bitregion_end field points to the next bit after the region. gcc/ChangeLog * gimple-ssa-store-merging.c (merged_store_group::can_be_merged_into): Fix off-by-one error.
2020-05-28c++: Fix initlist-array12.CMarek Polacek1-1/+3
* g++.dg/cpp0x/initlist-array12.C: Fix the definition of initializer_list for ilp32 target.
2020-05-28c++: Fix tmplattr10.CMarek Polacek1-1/+1
This test uses C++11 features so should only run in c++11. * g++.dg/ext/tmplattr10.C: Only run in c++11.
2020-05-28Revert "Add missing ChangeLog entry for r11-694"H.J. Lu1-4/+0
This reverts commit 7e58fe0e4c2b79a1cf5c93161856e27e1c830162.
2020-05-28Add missing ChangeLog entry for r11-694H.J. Lu1-0/+4
2020-05-28gcc.dg/builtin-bswap-10.c: Check "! int128"H.J. Lu1-1/+1
Check "! int128" instead of ilp32 since ILP32 targets can support int128. gcc/testsuite/ * gcc.dg/builtin-bswap-10.c: Check "! int128" instead of ilp32
2020-05-28Fortran : "type is( real(kind(1.)) )" spurious syntax error PR94397Mark Eggleston2-1/+30
Based on a patch in the comments of the PR. That patch fixed this problem but caused the test cases for PR93484 to fail. It has been changed to reduce initialisation expressions if the expression is not EXPR_VARIABLE and not EXPR_CONSTANT. 2020-05-28 Steven G. Kargl <kargl@gcc.gnu.org> Mark Eggleston <markeggleston@gcc.gnu.org> gcc/fortran/ PR fortran/94397 * match.c (gfc_match_type_spec): New variable ok initialised to true. Set ok with the return value of gfc_reduce_init_expr called only if the expression is not EXPR_CONSTANT and is not EXPR_VARIABLE. Add !ok to the check for type not being integer or the rank being greater than zero. 2020-05-28 Mark Eggleston <markeggleston@gcc.gnu.org> gcc/testsuite/ PR fortran/94397 * gfortran.dg/pr94397.F90: New test.
2020-05-28aarch64: Fix missed shrink-wrapping opportunityRichard Sandiford3-0/+44
wb_candidate1 and wb_candidate2 exist for two overlapping cases: when we use an STR or STP with writeback to allocate the frame, and when we set up a frame chain record (either using writeback allocation or not). However, aarch64_layout_frame was leaving these fields with legitimate register numbers even if we decided to do neither of those things. This prevented those registers from being shrink-wrapped, even though we were otherwise treating them as normal saves and restores. The case this patch handles isn't the common case, so it might not be worth going out of our way to optimise it. But I think the patch actually makes the output of aarch64_layout_frame more consistent. 2020-05-28 Richard Sandiford <richard.sandiford@arm.com> gcc/ * config/aarch64/aarch64.h (aarch64_frame): Add a comment above wb_candidate1 and wb_candidate2. * config/aarch64/aarch64.c (aarch64_layout_frame): Invalidate wb_candidate1 and wb_candidate2 if we decided not to use them. gcc/testsuite/ * gcc.target/aarch64/shrink_wrap_1.c: New test.
2020-05-28aarch64: Fix segfault in aarch64_expand_epilogue [PR95361]Richard Sandiford2-1/+16
The stack frame for the function in the testcase consisted of two SVE save slots. Both saves had been shrink-wrapped, but for different blocks, meaning that the stack allocation and deallocation were separate from the saves themselves. Before emitting the deallocation, we tried to attach a REG_CFA_DEF_CFA note to the preceding instruction, to redefine the CFA in terms of the stack pointer. But in this case there was no preceding instruction. This in practice only happens for SVE because: (a) We don't try to shrink-wrap wb_candidate* registers even when we've decided to treat them as normal saves and restores. I have a fix for that. (b) Even with (a) fixed, we're (almost?) guaranteed to emit a stack tie for frames that are 64k or larger, so we end up hanging the REG_CFA_DEF_CFA note on that instead. We should only need to redefine the CFA if it was previously defined in terms of the frame pointer. In other cases the CFA should already be defined in terms of the stack pointer, so redefining it is unnecessary but usually harmless. 2020-05-28 Richard Sandiford <richard.sandiford@arm.com> gcc/ PR testsuite/95361 * config/aarch64/aarch64.c (aarch64_expand_epilogue): Assert that we have at least some CFI operations when using a frame pointer. Only redefine the CFA if we have CFI operations. gcc/testsuite/ PR testsuite/95361 * gcc.target/aarch64/sve/pr95361.c: New test.
2020-05-28remove obsolete code from SLP invariant costingRichard Biener1-8/+2
This removes handling of !SLP_TREE_VECTYPE from invariant costing. The single caller guards against this case already. 2020-05-28 Richard Biener <rguenther@suse.de> * tree-vect-slp.c (vect_prologue_cost_for_slp): Remove case for !SLP_TREE_VECTYPE. (vect_slp_analyze_node_operations): Adjust.
2020-05-28Code generate externals/invariants during the SLP graph walkRichard Biener2-118/+42
This generates vector defs for externals and invariants during the SLP walk rather than as part of getting vectorized defs when vectorizing the users. This is a requirement to make sharing of external/invariant nodes be reflected in actual code generation. This temporarily adds a SLP_TREE_VEC_DEFS vector alongside the SLP_TREE_VEC_STMTS one. Eventually the latter can go away. 2020-05-27 Richard Biener <rguenther@suse.de> * tree-vectorizer.h (_slp_tree::vec_defs): Add. (SLP_TREE_VEC_DEFS): Likewise. * tree-vect-slp.c (_slp_tree::_slp_tree): Adjust. (_slp_tree::~_slp_tree): Likewise. (vect_mask_constant_operand_p): Remove unused function. (vect_get_constant_vectors): Rename to... (vect_create_constant_vectors): ... this. Take the invariant node as argument and code generate it. Remove dead code, remove temporary asserts. Pass a NULL stmt_info to vect_init_vector. (vect_get_slp_defs): Simplify. (vect_schedule_slp_instance): Code-generate externals and invariants using vect_create_constant_vectors.
2020-05-28make vect_finish_stmt_generation work w/o stmt_vec_infoRichard Biener1-8/+13
This makes the call chain below vec_init_vector happy with a NULL stmt_vec_info which is used as "context". 2020-05-27 Richard Biener <rguenther@suse.de> * tree-vect-stmts.c (vect_finish_stmt_generation_1): Conditionalize stmt_info use, assert the new stmt cannot throw when not specified. (vect_finish_stmt_generation): Adjust assert.
2020-05-28tree-optimization/95273 - more vectorizable_shift massagingRichard Biener2-1/+130
Covering all bases in vectorizable_shift is hard - this makes sure to appropriately handle the case of PR95356 without breaking others. 2020-05-28 Richard Biener <rguenther@suse.de> PR tree-optimization/95273 PR tree-optimization/95356 * tree-vect-stmts.c (vectorizable_shift): Adjust when and to what we set the vector type of the shift operand SLP node again. * gcc.target/i386/pr95356.c: New testcase.
2020-05-28arm: Fix unwanted fall-throughs in arm.cAndrea Corallo1-0/+6
gcc/ChangeLog 2020-05-28 Andrea Corallo <andrea.corallo@arm.com> * config/arm/arm.c (mve_vector_mem_operand): Fix unwanted fall-throughs.
2020-05-28Add documentation for missing params.Martin Liska1-5/+33
The patch fixes various issues spotted by check-params-in-docs.py script. I'm going to install the patch. gcc/ChangeLog: PR web/95380 * doc/invoke.texi: Add missing params, remove max-once-peeled-insns and rename ipcp-unit-growth to ipa-cp-unit-growth.
2020-05-28Fix nonconforming memory_operand for vpmovq{d,w,b}/vpmovd{w,b}/vpmovwb.liuhongt7-283/+421
According to Intel SDM, VPMOVQB xmm1/m16 {k1}{z}, xmm2 has 16-bit memory_operand instead of 128-bit one which existed in current implementation. Also for other vpmov instructions which have memory_operand narrower than 128bits. 2020-05-25 Hongtao Liu <hongtao.liu@intel.com> gcc/ChangeLog * config/i386/sse.md (*avx512vl_<code>v2div2qi2_store_1): Rename from *avx512vl_<code>v2div2qi_store and refine memory size of the pattern. (*avx512vl_<code>v2div2qi2_mask_store_1): Ditto. (*avx512vl_<code><mode>v4qi2_store_1): Ditto. (*avx512vl_<code><mode>v4qi2_mask_store_1): Ditto. (*avx512vl_<code><mode>v8qi2_store_1): Ditto. (*avx512vl_<code><mode>v8qi2_mask_store_1): Ditto. (*avx512vl_<code><mode>v4hi2_store_1): Ditto. (*avx512vl_<code><mode>v4hi2_mask_store_1): Ditto. (*avx512vl_<code>v2div2hi2_store_1): Ditto. (*avx512vl_<code>v2div2hi2_mask_store_1): Ditto. (*avx512vl_<code>v2div2si2_store_1): Ditto. (*avx512vl_<code>v2div2si2_mask_store_1): Ditto. (*avx512f_<code>v8div16qi2_store_1): Ditto. (*avx512f_<code>v8div16qi2_mask_store_1): Ditto. (*avx512vl_<code>v2div2qi2_store_2): New define_insn_and_split. (*avx512vl_<code>v2div2qi2_mask_store_2): Ditto. (*avx512vl_<code><mode>v4qi2_store_2): Ditto. (*avx512vl_<code><mode>v4qi2_mask_store_2): Ditto. (*avx512vl_<code><mode>v8qi2_store_2): Ditto. (*avx512vl_<code><mode>v8qi2_mask_store_2): Ditto. (*avx512vl_<code><mode>v4hi2_store_2): Ditto. (*avx512vl_<code><mode>v4hi2_mask_store_2): Ditto. (*avx512vl_<code>v2div2hi2_store_2): Ditto. (*avx512vl_<code>v2div2hi2_mask_store_2): Ditto. (*avx512vl_<code>v2div2si2_store_2): Ditto. (*avx512vl_<code>v2div2si2_mask_store_2): Ditto. (*avx512f_<code>v8div16qi2_store_2): Ditto. (*avx512f_<code>v8div16qi2_mask_store_2): Ditto. * config/i386/i386-builtin-types.def: Adjust builtin type. * config/i386/i386-expand.c: Ditto. * config/i386/i386-builtin.def: Adjust builtin. * config/i386/avx512fintrin.h: Ditto. * config/i386/avx512vlbwintrin.h: Ditto. * config/i386/avx512vlintrin.h: Ditto.
2020-05-28testsuite/95363 - fix gcc.dg/vect/bb-slp-pr95271.c for ilp32Richard Biener1-7/+10
This fixes the testcase to avoid out of bound shifts on ilp32 targets. 2020-05-28 Richard Biener <rguenther@suse.de> PR testsuite/95363 * gcc.dg/vect/bb-slp-pr95271.c: Fix on ilp32 targets.
2020-05-28gcov-tool: Flexible endian adjustment for merging coverage dataMartin Liska2-3/+6
gcc/ChangeLog: 2020-05-27 Dong JianQiang <dongjianqiang2@huawei.com> PR gcov-profile/95332 * gcov-io.c (gcov_var::endian): Move field. (from_file): Add IN_GCOV_TOOL check. * gcov-io.h (gcov_magic): Ditto. libgcc/ChangeLog: 2020-05-27 Dong JianQiang <dongjianqiang2@huawei.com> PR gcov-profile/95332 * libgcov-util.c (read_gcda_file): Call gcov_magic. * libgcov.h (gcov_magic): Disable GCC poison.
2020-05-28Daily bump.GCC Administrator7-1/+228
2020-05-27outputs.exp: no lto, linker default output, cdtor temps, empty argsAlexandre Oliva2-48/+119
This patch fixes various issues in the testsuite that came up after the dump/aux output revamp, namely: - many outputs.exp tests used -flto without checking that LTO was supported, getting lots of failures. With this patch, we test for LTO support, and skip -flto tests on platforms that do not support it. - some linkers error out if an output file is not named, and the a.{out,exe} construct that we used throughout outputs.exp to match the default linker output would trigger a bug in tcl globbing. With this patch, we detect the default linker output early. If none is found, we arrange to pass -o a.out explicitly in tests that used to test the default linker output. We now look for the detected default, or for explicitly-specified output. - collect2 will leave <execname>.cdtor.* files behind in -save-temps tests. Ignore them. - The prepending of -Wl, to file names in ldflags et al was done in a way that introduced empty arguments when consecutive blanks appeared in these board configuration knobs. Skip the empty strings between consecutive blanks to avoid this problem. gcc/testsuite/ChangeLog: * lib/gcc-defs.exp: Avoid introducing empty arguments between consecutive blanks in board linking options. * gcc.misc-tests/outputs.exp: Likewise. Document -gsplit-dwarf testing, skip LTO tests if -flto is not supported, detect the default linker output name, cope with the need for an explicit executable output.
2020-05-27gcc: xtensa: delegitimize UNSPEC_PLTMax Filippov1-0/+24
This fixes 'non-delegitimized UNSPEC 3 found in variable location' notes issued when building libraries which interferes with running tests. 2020-05-27 Max Filippov <jcmvbkbc@gmail.com> gcc/ * config/xtensa/xtensa.c (xtensa_delegitimize_address): New function. (TARGET_DELEGITIMIZE_ADDRESS): New macro.
2020-05-28Add support for __builtin_bswap128Eric Botcazou16-5/+125
This patch introduces a new builtin named __builtin_bswap128 on targets where TImode is supported, i.e. 64-bit targets only in practice. The implementation simply reuses the existing double word path in optab, so no routine is added to libgcc (which means that you get two calls to _bswapdi2 in the worst case). gcc/ChangeLog: * builtin-types.def (BT_UINT128): New primitive type. (BT_FN_UINT128_UINT128): New function type. * builtins.def (BUILT_IN_BSWAP128): New GCC builtin. * doc/extend.texi (__builtin_bswap128): Document it. * builtins.c (expand_builtin): Deal with BUILT_IN_BSWAP128. (is_inexpensive_builtin): Likewise. * fold-const-call.c (fold_const_call_ss): Likewise. * fold-const.c (tree_call_nonnegative_warnv_p): Likewise. * tree-ssa-ccp.c (evaluate_stmt): Likewise. * tree-vect-stmts.c (vect_get_data_ptr_increment): Likewise. (vectorizable_call): Likewise. * optabs.c (expand_unop): Always use the double word path for it. * tree-core.h (enum tree_index): Add TI_UINT128_TYPE. * tree.h (uint128_type_node): New global type. * tree.c (build_common_tree_nodes): Build it if TImode is supported. gcc/testsuite/ChangeLog: * gcc.dg/builtin-bswap-10.c: New test. * gcc.dg/builtin-bswap-11.c: Likewise. * gcc.dg/builtin-bswap-12.c: Likewise. * gcc.target/i386/builtin-bswap-5.c: Likewise.
2020-05-27i386: Fix V2SF horizontal add/subtract insnsUros Bizjak2-33/+46
PFPNACC insn is incorrectly modelled to perform addition and subtraction of two operands, but in reality it performs horizontal addition and subtraction: Instruction: PFPNACC dest,src Description: dest[31:0] <- dest[31:0] - dest[63:32]; dest[63:32] <- src[31:0] + src[63:32]; Also, it is not possible to directly replace PFACC with HADDPS and PFNACC with HSUBPS, because operands in the second word do not match. PFACC does: dest[31..0] <- dest[31..0] + dest[63..32]; dest[63..32] <- src[31..0] + src [63..32]; while HADDPS does: dest[31..0] <- dest[31..0] + dest[63..32]; dest[63..32] <- dest[127..96] + dest[95..64]; dest[95..64] <- src [31..0] + src [64..32]; dest[127:96] <- src [127..96] + src [95..64]; 2020-05-27 Uroš Bizjak <ubizjak@gmail.com> gcc/ChangeLog: * config/i386/mmx.md (*mmx_haddv2sf3): Remove SSE alternatives. (mmx_hsubv2sf3): Ditto. (mmx_haddsubv2sf3): New expander. (*mmx_haddsubv2sf3): Rename from mmx_addsubv2sf3. Correct RTL template to model horizontal subtraction and addition. * config/i386/i386-builtin.def (IX86_BUILTIN_PFPNACC): Update for rename.
2020-05-27PR fortran/95090 - ICE: identifier overflowHarald Anlauf2-1/+21
For long module name, derive type and component name, the generated name-mangled symbol did not fit into a buffer when coarrays were enabled. Provide sufficiently large temporary. 2020-05-27 Harald Anlauf <anlauf@gmx.de> gcc/fortran/ PR fortran/95090 * iresolve.c (gfc_get_string): Enlarge temporary for name-mangling. gcc/testsuite/ PR fortran/95090 * gfortran.dg/pr95090.f90: New test.
2020-05-27i386: Remove %q modifier from two pmov insn templates [PR95355]Uros Bizjak2-2/+22
2020-05-27 Uroš Bizjak <ubizjak@gmail.com> gcc/ChangeLog: PR target/95355 * config/i386/sse.md (<mask_codefor>avx512f_<code>v16qiv16si2<mask_name>): Remove %q operand modifier from insn template. (avx512f_<code>v8hiv8di2<mask_name>): Ditto. gcc/testsuite/ChangeLog: PR target/95355 * gcc.target/i386/pr95355.c: New test.
2020-05-27jit: use deep unsharing of trees [PR 95314]David Malcolm4-1/+75
PR jit/95314 reports a internal error inside verify_gimple, which turned out to be due to reusing the result of gcc_jit_lvalue_get_address in several functions, leading to tree nodes shared between multiple function bodies. This patch fixes the issue by adopting the "Deep unsharing" strategy described in the comment in gimplify.c preceding mostly_copy_tree_r: to mark all of the jit "frontend"'s expression tree nodes with TREE_VISITED, and to set LANG_HOOKS_DEEP_UNSHARING, so that "they are unshared on the first reference within functions when the regular unsharing algorithm runs". gcc/jit/ChangeLog: PR jit/95314 * dummy-frontend.c (LANG_HOOKS_DEEP_UNSHARING): Define to be true. * jit-playback.h (gcc::jit::playback::rvalue): Mark tree node with TREE_VISITED. gcc/testsuite/ChangeLog: PR jit/95314 * jit.dg/all-non-failing-tests.h: Add test-pr95314-rvalue-reuse.c. * jit.dg/test-pr95314-rvalue-reuse.c: New test.
2020-05-27jit: fix libgccjit.info entry [PR 91330]David Malcolm2-3/+3
2020-05-27 Tom Tromey <tromey@gcc.gnu.org> gcc/jit/ChangeLog: PR jit/91330 * docs/conf.py (texinfo_documents): Set description. * docs/_build/texinfo/libgccjit.texi: Regenerate.
2020-05-27c++: Handle multiple aggregate overloads [PR95319].Jason Merrill2-1/+27
Here, when considering the two 'insert' overloads, we look for aggregate conversions from the same initializer-list to B<3> or initializer_list<B<3>>. But since my fix for reshape_init overhead on the PR14179 testcase we reshaped the initializer-list directly, leading to an error when we then tried to reshape it differently for the second overload. gcc/cp/ChangeLog: PR c++/95319 * decl.c (reshape_init_array_1): Don't reuse in overload context. gcc/testsuite/ChangeLog: PR c++/95319 * g++.dg/cpp0x/initlist-array12.C: New test.
2020-05-27Fortran : ICE in gfc_trans_label_assign PR50392Mark Eggleston2-3/+20
A function may contain an assigned goto. If the the return variable is an integer a statement can be assigned to it. Prior to this fix this resulted in an ICE. 2020-05-27 Tobias Burnus <tobias@codesourcery.com> gcc/fortran/ PR fortran/50392 * trans-decl.c (gfc_get_symbol_decl): Remove unnecessary block delimiters. Add auxiliary variables if a label is assigned to a return variable. (gfc_gat_fake_result): If the symbol has an assign attribute set declaration from the symbol's backend declaration. 2020-05-27 Mark Eggleston <markeggleston@gnu.gcc.org> gcc/testsuite/ PR fortran/50392 * gfortran.dg/pr50392.f: New test.
2020-05-27i386: Implement V2SF shufflesUros Bizjak3-20/+124
2020-05-27 Uroš Bizjak <ubizjak@gmail.com> gcc/ChangeLog: * config/i386/mmx.md (mmx_pswapdsf2): Add SSE alternatives. Enable insn pattern for TARGET_MMX_WITH_SSE. (*mmx_movshdup): New insn pattern. (*mmx_movsldup): Ditto. (*mmx_movss): Ditto. * config/i386/i386-expand.c (ix86_vectorize_vec_perm_const): Handle E_V2SFmode. (expand_vec_perm_movs): Handle E_V2SFmode. (expand_vec_perm_even_odd): Ditto. (expand_vec_perm_broadcast_1): Assert that E_V2SFmode is already handled by standard shuffle patterns. gcc/testsuite/ChangeLog: * gcc.target/i386/vperm-v2sf.c: New test.
2020-05-27c++: operator<=> and -Wzero-as-null-pointer-constant [PR95242]Jason Merrill2-0/+4
In C++20, if there is no viable operator< available, lhs < rhs gets rewritten to (lhs <=> rhs) < 0, where operator< for the comparison categories is intended to accept literal 0 on the RHS but not other integers. We don't want this to produce a warning from -Wzero-as-null-pointer-constant. gcc/cp/ChangeLog: * call.c (build_new_op_1): Suppress warn_zero_as_null_pointer_constant across comparison of <=> result to 0. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/spaceship-synth2.C: Add -Wzero-as-null-pointer-constant.
2020-05-27c++: Fix stdcall attribute in template. [PR95222]Jason Merrill2-1/+53
Another case that breaks with my fix for PR90750: we shouldn't move type attributes in TYPENAME context either, as there's no decl for them to move to. gcc/cp/ChangeLog: PR c++/95222 * decl.c (grokdeclarator): Don't shift attributes in TYPENAME context. gcc/testsuite/ChangeLog: PR c++/95222 * g++.dg/ext/tmplattr10.C: New test.
2020-05-27c++: Revert alias template change [pr95263]Nathan Sidwell2-15/+25
Turns out templates are more complicated than you think, even when you know they are more complicated than you think. Reverting this change. PR c++/95263 * pt.c (lookup_template_class_1): Restore alias template mutation.
2020-05-27tree-optimization/95295 - fix sinking after path merging in new SM codeRichard Biener2-2/+22
This fixes a missed sinking of remat stores across unrelated stores after merging from different paths. 2020-05-27 Richard Biener <rguenther@suse.de> PR tree-optimization/95295 * tree-ssa-loop-im.c (sm_seq_valid_bb): Fix sinking after merging stores from paths. * gcc.dg/torture/pr95295-3.c: New testcase.
2020-05-27tree-optimization/95356 - fix vectorizable_shift vector typesRichard Biener1-1/+1
This makes sure to always use the same vector type for the shift operand as for the shifted operand. 2020-05-27 Richard Biener <rguenther@suse.de> PR tree-optimization/95356 * tree-vect-stmts.c (vectorizable_shift): Adjust vector type for the shift operand.
2020-05-27tree-optimization/95335 - fix SLP nodes dropped to invariantRichard Biener2-1/+19
When we drop a SLP node to invariant because we cannot vectorize it we have to make sure to revisit it in the users. 2020-05-27 Richard Biener <rguenther@suse.de> PR tree-optimization/95335 * tree-vect-slp.c (vect_slp_analyze_node_operations): Reset lvisited for nodes made external. * gcc.dg/vect/bb-slp-pr95335.c: New testcase.
2020-05-27Bump version to 11.Martin Liska1-1/+1
gcc/ada/ChangeLog: * gnatvsn.ads: Bump Library_Version to 11.
2020-05-27Add debug (slp_tree) and dump infrastructure for thisRichard Biener3-12/+84
This adds an alternate debug_dump_context similar to the one for selftests but for interactive debugging routines. This allows to share code between user-visible dumping via the dump_* API and those debugging routines. The primary driver was SLP node dumping which wasn't accessible from inside a gdb session up to now. 2020-05-27 Richard Biener <rguenther@suse.de> * dump-context.h (debug_dump_context): New class. (dump_context): Make it friend. * dumpfile.c (debug_dump_context::debug_dump_context): Implement. (debug_dump_context::~debug_dump_context): Likewise. * tree-vect-slp.c: Include dump-context.h. (vect_print_slp_tree): Dump a single SLP node. (debug): New overload for slp_tree. (vect_print_slp_graph): Rename from vect_print_slp_tree and use that. (vect_analyze_slp_instance): Adjust.
2020-05-27openmp: Fix up omp_declare_variant{s,_alt} htab handlingJakub Jelinek2-0/+38
This patch fixes a GC ICE. During debugging, I've found that during gimplification we can actually call omp_resolve_declare_variant multiple times and it would create a new magic declare_variant_alt FUNCTION_DECL each time, which is undesirable, once we have such a decl, we should just use that. The other problem is that there was no cgraph node removal hook. As the omp_declare_variants htab is used just early during gimplification, we can just clear the whole htab, rather than trying to lookup and remove a particular entry. The other hash table is used later as well and that one uses just DECL_UID as hash, so in that case the patch removes the elt. 2020-05-27 Jakub Jelinek <jakub@redhat.com> PR middle-end/95315 * omp-general.c (omp_declare_variant_remove_hook): New function. (omp_resolve_declare_variant): Always return base if it is already declare_variant_alt magic decl itself. Register omp_declare_variant_remove_hook as cgraph node removal hook. * gcc.dg/gomp/pr95315.c: New test.
2020-05-27Daily bump.GCC Administrator7-1/+311
2020-05-26Fix pr20601-1.c on the H8Jeff Law1-2/+2
gcc/ * config/h8300/testcompare.md (tst_extzv_1_n): Do not accept constants for the primary input operand. (tstsi_variable_bit_qi): Similarly.
2020-05-26jit: fix missing types for builtins [PR 95306]David Malcolm8-11/+279
PR jit/95306 reports that attempts to use builtins __builtin_sadd_overflow" and "__builtin_memcpy" via gcc_jit_context_get_builtin_function lead to inscrutable error messages of the form: unimplemented primitive type for builtin: 42 and: unimplemented primitive type for builtin: 38 The root cause is that jit-builtins.c only implements a subset of the types defined via DEF_PRIMITIVE_TYPE in builtin-types.def. This patch: - implements enough types to enable the above two builtins to be referenced - documents gcc_jit_context_get_builtin_function, and notes the limitation that not all types are supported (supporting some of them would take a lot of extra work) - improves the error message for the unsupported cases - adds a testcase for __builtin_memcpy. This required jit_langhook_global_bindings_p to be implemented (otherwise the assertion there failed deep inside "expand" on the builtin) - adds test coverage for the above gcc/jit/ChangeLog: PR jit/95306 * docs/topics/functions.rst (gcc_jit_context_get_builtin_function): Document. * docs/_build/texinfo/libgccjit.texi: Regenerate. * dummy-frontend.c (jit_langhook_global_bindings_p): Remove gcc_unreachable. * jit-builtins.c (type_names): New array. (get_string_for_type_id): New function. (gcc::jit::builtins_manager::make_primitive_type): Show name of type in error messages. Update cases to reflect the order in builtin-types.def. Implement cases for BT_INT8, BT_INT16, BT_UINT8, BT_CONST_PTR, BT_VOLATILE_PTR, BT_INT_PTR, BT_FLOAT_PTR, BT_CONST_DOUBLE_PTR, BT_SIZE, BT_CONST_SIZE. gcc/testsuite/ChangeLog: PR jit/95306 * jit.dg/all-non-failing-tests.h: Add test-builtin-memcpy.c and test-pr95306-builtin-types.c. * jit.dg/test-builtin-memcpy.c: New test. * jit.dg/test-error-gcc_jit_context_get_builtin_function-unimplemented-type.c: New test. * jit.dg/test-pr95306-builtin-types.c: New test.
2020-05-26PR fortran/95104 - Segfault on a legal WAIT statementHarald Anlauf1-0/+8
Referencing a unit in a WAIT statement that has not been opened before resulted in a NULL pointer dereference. Check for this condition. 2020-05-26 Harald Anlauf <anlauf@gmx.de> libgfortran/ PR libfortran/95104 * io/transfer.c (st_wait_async): Do not dereference NULL pointer. gcc/testsuite/ PR libfortran/95104 * gfortran.dg/pr95104.f90: New test. Co-Authored-By: Steven G. Kargl <kargl@gcc.gnu.org>
2020-05-26PR libfortran/95195 - improve runtime error for namelist i/o to unformatted fileHarald Anlauf1-0/+14
Namelist input/output to unformatted files is prohibited. Generate useful runtime errors instead instead of misleading ones. 2020-05-26 Harald Anlauf <anlauf@gmx.de> libgfortran/ PR fortran/95195 * io/transfer.c (finalize_transfer): Generate runtime error for namelist input/output to unformatted file. gcc/testsuite/ PR fortran/95195 * gfortran.dg/namelist_97.f90: New test.
2020-05-26Fix issue with LTO bootstrapEric Botcazou1-9/+0
gcc/ada/ChangeLog PR ada/95333 * gcc-interface/decl.c (gnat_to_gnu_param): Never make a variant of the type.
2020-05-26PR fortran/95089 - ICE in gfc_get_derived_type, at fortran/trans-types.c:2843Harald Anlauf2-2/+14
For long module name, derive type and component name, the generated name-mangled symbol did not fit into a buffer when coarrays were enabled. Provide sufficiently large temporary. 2020-05-26 Harald Anlauf <anlauf@gmx.de> gcc/fortran/ PR fortran/95089 * trans-types.c (gfc_get_derived_type): Enlarge temporary to hold mangled name "_caf_symbol". gcc/testsuite/ PR fortran/95089 * gfortran.dg/pr95089.f90: New test.
2020-05-26i386: Add SSE2 alternative to mmx_pswapd2vsi2Uros Bizjak1-7/+13
2020-05-26 Uroš Bizjak <ubizjak@gmail.com> gcc/ChangeLog: * config/i386/mmx.md (mmx_pswapdv2si2): Add SSE2 alternative.
2020-05-26[LTO/offloading] Fix offloading-compilation ICE without -flto (PR84320)Tobias Burnus1-1/+1
gcc/ChangeLog: PR ipa/95320 * ipa-utils.h (odr_type_p): Also permit calls with only flag_generate_offload set.