aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-05-09libgcc: cris: Remove support for crisv32-*-* and cris*-*-linuxHans-Peter Nilsson4-18/+5
Part of the removal of crisv32-* and cris-*-linux* (cris-elf remains). libgcc: * config.host: Remove support for crisv32-*-* and cris*-*-linux. * config/cris/libgcc-glibc.ver, config/cris/t-linux: Remove.
2020-05-09cris: Remove from gcc/config/cris: t-linux, linux.h, linux.optHans-Peter Nilsson4-188/+2
Part of the removal of crisv32-* and cris-*-linux* (cris-elf remains). gcc: * config/cris/t-linux, config/cris/linux.h, config/cris/linux.opt: Remove.
2020-05-09config.gcc: Remove support for crisv32-*-* and cris-*-linux*.Hans-Peter Nilsson2-26/+4
Or really, move from the obsolete targets section, to unsupported targets section, and remove crisv32-*-* and cris-*-linux* from the rest. Part of the removal of crisv32-* and cris-*-linux* (cris-elf remains). gcc: * config.gcc: Remove support for crisv32-*-* and cris-*-linux*.
2020-05-09dbr: Filter-out TARGET_FLAGS_REGNUM from end_of_function_needs.Hans-Peter Nilsson2-0/+11
Compared to the cc0 version, I noticed a regression in delay-slot-filling for CRIS for several functions in libgcc with a similar layout, one being lshrdi3, where with cc0 all delay-slots were filled, as exposed by the test-case in gcc.target/cris/pr93372-1.c. There's one slot that fails to be filled for the decc0rated CRIS port. A gdb session shows it is because of the automatic inclusion of TARGET_FLAGS_REGNUM in "registers needed at the end of the function" because there are insns in the epilogue that clobber the condition-code register. I'm not trying to tell a clobber from a set, as parallels with set instead of clobber seems likely to happen too, for targets with TARGET_FLAGS_REGNUM set. Other targets with delay-slots and one dedicated often-clobbered condition-code-register should consider defining TARGET_FLAGS_REGNUM. I noticed it improved delay-slot-filling also in other situations than this. (Previously approved by Jeff Law.) gcc: * resource.c (init_resource_info): Filter-out TARGET_FLAGS_REGNUM from end_of_function_needs.
2020-05-09Daily bump.GCC Administrator1-1/+1
2020-05-08switchcontext.S: Include <cet.h> and use _CET_ENDBRH.J. Lu2-0/+15
When __CET__ is defined, <cet.h> should be included to add Intel CET marker to object file and _CET_ENDBR should be placed at function entry to indicate indirect branch target. * libdruntime/config/x86/switchcontext.S: Include <cet.h> if __CET__ is defined. (_CET_ENDBR): New. Define if __CET__ is not defined. (fiber_switchContext): Add _CET_ENDBR after .cfi_startproc.
2020-05-08libphobos: Add --enable-cet to configureH.J. Lu6-12/+114
When --enable-cet is used to configure GCC, enable Intel CET in libphobos. * Makefile.am (AM_MAKEFLAGS): Add $(CET_FLAGS) to GCC FLAGS. * configure.ac (CET_FLAGS): Add GCC_CET_FLAGS and AC_SUBST. * Makefile.in: Regenerated. * aclocal.m4: Likewise. * configure.ac: Likewise.
2020-05-08Improve hard reg preference propapagation.Vladimir N. Makarov4-23/+58
2020-05-08 Vladimir Makarov <vmakarov@redhat.com> * ira-color.c (update_costs_from_allocno): Remove conflict_cost_update_p argument. Propagate costs only along threads. Always do conflict cost update. Add printing debugging info. (update_costs_from_copies): Add printing debugging info. (restore_costs_from_copies): Ditto. (assign_hard_reg): Improve debug info. (push_only_colorable): Ditto. Call update_costs_from_prefs. (color_allocnos): Remove update_costs_from_prefs. 2020-05-08 Vladimir Makarov <vmakarov@redhat.com> * gcc.target/i386/pr92807-1.c: Improve the regex.
2020-05-08coroutines: Update TREE_SIDE_EFFECTS on inserted bind exprs.Iain Sandoe4-5/+73
There are several places where we insert bind expressions while making the coroutine AST transforms. These should be marked as having side-effects where relevant, which had been omitted. This leads to at least one failure in the cppcoros test suite, where a loop body is dropped in gimplification because it is not marked. gcc/cp/ChangeLog: 2020-05-08 Iain Sandoe <iain@sandoe.co.uk> PR c++/95003 * coroutines.cc (build_actor_fn): Ensure that bind scopes are marked as having side-effects where necessary. (replace_statement_captures): Likewise. (morph_fn_to_coro): Likewise. gcc/testsuite/ChangeLog: 2020-05-08 Iain Sandoe <iain@sandoe.co.uk> PR c++/95003 * g++.dg/coroutines/torture/pr95003.C: New test.
2020-05-08c++: No news is good newsNathan Sidwell2-408/+2
The NEWS file hasn't been updated since GCC 3.4. It's not very news-worthy. * NEWS: Delete, it is so stale.
2020-05-08preprocessor: Reimplement directives only processing, support raw literals.Nathan Sidwell22-265/+770
The existing directives-only code (a) punched a hole through the libcpp interface and (b) didn't support raw string literals. This reimplements this preprocessing mode. I added a proper callback interface, and adjusted c-ppoutput to use it. Sadly I cannot get rid of the libcpp/internal.h include for unrelated reasons. The new scanner is in lex.x, and works doing some backwards scanning when it finds a charater of interest. This reduces the number of cases one has to deal with in forward scanning. It may have different failure mode than forward scanning on bad tokenization. Finally, Moved some cpp tests from the c-specific dg.gcc/cpp directory to the c-c++-common/cpp shared directory, libcpp/ * directives-only.c: Delete. * Makefile.in (libcpp_a_OBJS, libcpp_a_SOURCES): Remove it. * include/cpplib.h (enum CPP_DO_task): New enum. (cpp_directive_only_preprocess): Declare. * internal.h (_cpp_dir_only_callbacks): Delete. (_cpp_preprocess_dir_only): Delete. * lex.c (do_peek_backslask, do_peek_next, do_peek_prev): New. (cpp_directives_only_process): New implementation. gcc/c-family/ Reimplement directives only processing. * c-ppoutput.c (token_streamer): Ne. (directives_only_cb): New. Swallow ... (print_lines_directives_only): ... this. (scan_translation_unit_directives_only): Reimplment using the published interface. gcc/testsuite/ * gcc.dg/cpp/counter-[23].c: Move to c-c+_-common/cpp. * gcc.dg/cpp/dir-only-*: Likewise. * c-c++-common/cpp/dir-only-[78].c: New.
2020-05-08move permutation validity checkRichard Biener9-180/+180
This delays the SLP permutation check to vectorizable_load and optimizes permutations only after all SLP instances have been generated and the vectorization factor is determined. 2020-05-08 Richard Biener <rguenther@suse.de> * tree-vectorizer.h (vec_info::slp_loads): New. (vect_optimize_slp): Declare. * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Do nothing when there are no loads. (vect_gather_slp_loads): Gather loads into a vector. (vect_supported_load_permutation_p): Remove. (vect_analyze_slp_instance): Do not verify permutation validity here. (vect_analyze_slp): Optimize permutations of reductions after all SLP instances have been gathered and gather all loads. (vect_optimize_slp): New function split out from vect_supported_load_permutation_p. Elide some permutations. (vect_slp_analyze_bb_1): Call vect_optimize_slp. * tree-vect-loop.c (vect_analyze_loop_2): Likewise. * tree-vect-stmts.c (vectorizable_load): Check whether the load can be permuted. When generating code assert we can. * gcc.dg/vect/bb-slp-pr68892.c: Adjust for not supported SLP permutations becoming builds from scalars. * gcc.dg/vect/bb-slp-pr78205.c: Likewise. * gcc.dg/vect/bb-slp-34.c: Likewise.
2020-05-08EOF has a locationNathan Sidwell38-43/+104
There's no need to special-case EOF's location. For the complete file we give it a legitimate location. And for deferred parses we now zap a temporary EOF onto the next token, so we can just use its location anyway. gcc/cp/ * parser.c (cp_lexer_set_source_position_from_token): EOF has a location too. gcc/testsuite/ * c-c++-common/raw-string-6.c: Adjust EOF error location. * g++.dg/cpp0x/decltype63.C: Likewise. * g++.dg/cpp0x/gen-attrs-64.C: Likewise. * g++.dg/cpp0x/pr68726.C: Likewise. * g++.dg/cpp0x/pr78341.C: Likewise. * g++.dg/cpp1y/pr65202.C: Likewise. * g++.dg/cpp1z/class-deduction44.C: Likewise. * g++.dg/diagnostic/unclosed-extern-c.C: Likewise. * g++.dg/diagnostic/unclosed-function.C: Likewise. * g++.dg/diagnostic/unclosed-namespace.C: Likewise. * g++.dg/diagnostic/unclosed-struct.C: Likewise. * g++.dg/ext/pr84598.C: Likewise. * g++.dg/other/switch4.C: Likewise. * g++.dg/parse/crash10.C: Likewise. * g++.dg/parse/crash18.C: Likewise. * g++.dg/parse/crash35.C: Likewise. * g++.dg/parse/crash59.C: Likewise. * g++.dg/parse/crash61.C: Likewise. * g++.dg/parse/crash67.C: Likewise. * g++.dg/parse/ctor3.C: Likewise. * g++.dg/parse/error14.C: Likewise. * g++.dg/parse/error5.C: Likewise. * g++.dg/parse/error56.C: Likewise. * g++.dg/parse/invalid1.C: Likewise. * g++.dg/parse/parameter-declaration-1.C: Likewise. * g++.dg/parse/parser-pr28152-2.C: Likewise. * g++.dg/parse/parser-pr28152.C: Likewise. * g++.dg/parse/pr68722.C: Likewise. * g++.dg/pr46852.C: Likewise. * g++.dg/pr46868.C: Likewise. * g++.dg/template/crash115.C: Likewise. * g++.dg/template/crash43.C: Likewise. * g++.dg/template/error-recovery1.C: Likewise. * g++.dg/template/error57.C: Likewise. * g++.old-deja/g++.other/crash31.C: Likewise.
2020-05-08Fix uniqueness of address for aliased objectsEric Botcazou4-3/+41
Two aliased objects must have distinct addresses, even if they have size zero, so we make sure to allocate at least one byte for them. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Force at least the unit size for an aliased object of a constrained nominal subtype whose size is variable.
2020-05-08Couple of tweaks to help in LTO modeEric Botcazou3-8/+141
The first tweak is to remove the TREE_OVERFLOW flag on INTEGER_CSTs because it prevents them from being uniquized in LTO mode. The second, unrelated tweak is to canonicalize the packable types made by gigi so that at most one per type is present in the GENERIC IL. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Deal with artificial maximally-sized types designed by access types. * gcc-interface/utils.c (packable_type_hash): New structure. (packable_type_hasher): Likewise. (packable_type_hash_table): New hash table. (init_gnat_utils): Initialize it. (destroy_gnat_utils): Destroy it. (packable_type_hasher::equal): New method. (hash_packable_type): New static function. (canonicalize_packable_type): Likewise. (make_packable_type): Make sure not to use too small a type for the size of the new fields. Canonicalize the type if it is named.
2020-05-08Fix missing information in exception messages with -gnateEEric Botcazou2-25/+33
The information was missing in cases the front-end was able to turn the range comparison into a simple comparison. * gcc-interface/trans.c (Raise_Error_to_gnu): Always compute a lower bound and an upper bound for use by the -gnateE switch for range and comparison operators.
2020-05-08Small tweak to gnat_to_gnu_paramEric Botcazou2-2/+10
We mark the type of In parameters in Ada with the const qualifier, but it is stripped by free_lang_data_in_type so do not do it in LTO mode. * gcc-interface/decl.c (gnat_to_gnu_param): Do not make a variant of the type in LTO mode.
2020-05-08Fix availability compute during VN DOM eliminationRichard Biener5-20/+76
This fixes an issue with redundant store elimination in FRE/PRE which, when invoked by the DOM elimination walk, ends up using possibly stale availability data from the RPO walk. It also fixes a missed optimization during valueization of addresses by making sure to use get_addr_base_and_unit_offset_1 which can valueize and adjusting that to also valueize ARRAY_REFs low-bound. 2020-05-08 Richard Biener <rguenther@suse.de> * tree-ssa-sccvn.c (rpo_avail): Change type to eliminate_dom_walker *. (eliminate_with_rpo_vn): Adjust rpo_avail to make vn_valueize use the DOM walker availability. (vn_reference_fold_indirect): Use get_addr_base_and_unit_offset_1 with vn_valueize as valueization callback. (vn_reference_maybe_forwprop_address): Likewise. * tree-dfa.c (get_addr_base_and_unit_offset_1): Also valueize array_ref_low_bound. * gnat.dg/opt83.adb: New testcase.
2020-05-08match.pd: A ^ ((A ^ B) & -(C cmp D)) -> (C cmp D) ? B : A simplification ↵Jakub Jelinek4-0/+85
[PR94786] We already have x - ((x - y) & -(z < w)) and x + ((y - x) & -(z < w)) simplifications, this one adds x ^ ((x ^ y) & -(z < w)) (not merged using for because of the :c that can be present on bit_xor and can't on minus). 2020-05-08 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/94786 * match.pd (A ^ ((A ^ B) & -(C cmp D)) -> (C cmp D) ? B : A): New simplification. * gcc.dg/tree-ssa/pr94786.c: New test.
2020-05-08ix86: Add peephole2 for *add<mode>3_cc_overflow_1 followed by matching ↵Jakub Jelinek4-0/+37
memory store [PR94857] The following peephole2 changes: - addl (%rdi), %esi + xorl %eax, %eax + addl %esi, (%rdi) setc %al - movl %esi, (%rdi) - movzbl %al, %eax ret on the testcase. *add<mode>3_cc_overflow_1, being an add{l,q} insn, is commutative, so if TARGET_READ_MODIFY_WRITE we can replace addl (%rdi), %esi; movl %esi, (%rdi) with addl %esi, (%rdi) if %esi is dead after those two insns. 2020-05-08 Jakub Jelinek <jakub@redhat.com> PR target/94857 * config/i386/i386.md (peephole2 after *add<mode>3_cc_overflow_1): New define_peephole2. * gcc.target/i386/pr94857.c: New test.
2020-05-08tree: Avoid variable sharing in get_narrower [PR94724]Jakub Jelinek2-1/+5
On Thu, May 07, 2020 at 02:45:29PM +0200, Thomas Schwinge wrote: > >>+ for (tree op = win; TREE_CODE (op) == COMPOUND_EXPR; > > ..., and new 'op' variable here. > > >>+ op = TREE_OPERAND (op, 1)) > >>+ v.safe_push (op); > >>+ FOR_EACH_VEC_ELT_REVERSE (v, i, op) > >>+ ret = build2_loc (EXPR_LOCATION (op), COMPOUND_EXPR, > >>+ TREE_TYPE (win), TREE_OPERAND (op, 0), > >>+ ret); > >>+ return ret; > >> } > >> while (TREE_CODE (op) == NOP_EXPR) > >> { There is no reason for the shadowing and op at this point acts as a temporary and will be overwritten in FOR_EACH_VEC_ELT_REVERSE anyway. So, we can just s/tree // here. 2020-05-08 Jakub Jelinek <jakub@redhat.com> PR middle-end/94724 * tree.c (get_narrower): Reuse the op temporary instead of shadowing it.
2020-05-08match.pd: Canonicalize (X + (X >> (prec - 1))) ^ (X >> (prec - 1)) to abs ↵Jakub Jelinek4-0/+28
(X) [PR94783] The following patch canonicalizes M = X >> (prec - 1); (X + M) ^ M for signed integral types into ABS_EXPR (X). For X == min it is already UB because M is -1 and min + -1 is UB, so we can use ABS_EXPR rather than say ABSU_EXPR + cast. The backend might then emit the abs code back using the shift and addition and xor if it is the best sequence for the target, but could do something different that is better. 2020-05-08 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/94783 * match.pd ((X + (X >> (prec - 1))) ^ (X >> (prec - 1)) to abs (X)): New simplification. * gcc.dg/tree-ssa/pr94783.c: New test.
2020-05-08match.pd: Optimize ffs of known non-zero arg into ctz + 1 [PR94956]Jakub Jelinek4-0/+45
The ffs expanders on several targets (x86, ia64, aarch64 at least) emit a conditional move or similar code to handle the case when the argument is 0, which makes the code longer. If we know from VRP that the argument will not be zero, we can (if the target has also an ctz expander) just use ctz which is undefined at zero and thus the expander doesn't need to deal with that. 2020-05-08 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/94956 * match.pd (FFS): Optimize __builtin_ffs* of non-zero argument into __builtin_ctz* + 1 if direct IFN_CTZ is supported. * gcc.target/i386/pr94956.c: New test.
2020-05-08match.pd: Simplify unsigned A - B - 1 >= A to B >= A [PR94913]Jakub Jelinek4-2/+52
Implemented thusly. The TYPE_OVERFLOW_WRAPS is there just because the pattern above it has it too, if you want, I can throw it away from both. 2020-05-08 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/94913 * match.pd (A - B + -1 >= A to B >= A): New simplification. (A - B > A to A < B): Don't test TYPE_OVERFLOW_WRAPS which is always true for TYPE_UNSIGNED integral types. * gcc.dg/tree-ssa/pr94913.c: New test.
2020-05-08csa: Fix --enable-checking=yes,df bootstrap failure in csa [PR94961]Jakub Jelinek5-9/+24
My recent combine-stack-adj.c change broke df checking bootstrap, while most of the changes are done through validate_change/confirm_changes which update df info, the removal of REG_EQUAL notes didn't update df info. 2020-05-08 Jakub Jelinek <jakub@redhat.com> PR bootstrap/94961 PR rtl-optimization/94516 * rtl.h (remove_reg_equal_equiv_notes): Add a bool argument defaulted to false. * rtlanal.c (remove_reg_equal_equiv_notes): Add no_rescan argument. Call df_notes_rescan if that argument is not true and returning true. * combine.c (adjust_for_new_dest): Pass true as second argument to remove_reg_equal_equiv_notes. * postreload.c (reload_combine_recognize_pattern): Don't call df_notes_rescan.
2020-05-08Daily bump.GCC Administrator1-1/+1
2020-05-07rs6000: Tests for setnbcSegher Boessenkool8-0/+99
2020-05-07 Segher Boessenkool <segher@kernel.crashing.org> * gcc.target/powerpc/setnbc.h: New. * gcc.target/powerpc/setnbceq.c: New. * gcc.target/powerpc/setnbcge.c: New. * gcc.target/powerpc/setnbcgt.c: New. * gcc.target/powerpc/setnbcle.c: New. * gcc.target/powerpc/setnbclt.c: New. * gcc.target/powerpc/setnbcne.c: New.
2020-05-07rs6000: New insns setnbc and setnbcrSegher Boessenkool2-4/+31
setnbc[r] is like setbc[r], but it writes -1 instead of 1 to the GPR. 2020-05-07 Segher Boessenkool <segher@kernel.crashing.org> * config/rs6000/rs6000.md (*setnbc_<un>signed_<GPR:mode>): New define_insn. (*setnbcr_<un>signed_<GPR:mode>): New define_insn. (*neg_eq_<mode>): Avoid for TARGET_FUTURE; add missing && 1. (*neg_ne_<mode>): Likewise.
2020-05-07rs6000: Tests for setbcSegher Boessenkool8-0/+99
2020-05-07 Segher Boessenkool <segher@kernel.crashing.org> * gcc.target/powerpc/setbc.h: New. * gcc.target/powerpc/setbceq.c: New. * gcc.target/powerpc/setbcge.c: New. * gcc.target/powerpc/setbcgt.c: New. * gcc.target/powerpc/setbcle.c: New. * gcc.target/powerpc/setbclt.c: New. * gcc.target/powerpc/setbcne.c: New.
2020-05-07rs6000: New insns setbc and setbcrSegher Boessenkool2-11/+76
New instructions setbc and setbcr. setbc sets a GPR to 1 if some condition register bit is set, and 0 otherwise; setbcr does it the other way around. 2020-05-07 Segher Boessenkool <segher@kernel.crashing.org> * config/rs6000/rs6000.md (setbc_<un>signed_<GPR:mode>): New define_insn. (*setbcr_<un>signed_<GPR:mode>): Likewise. (cstore<mode>4): Use setbc[r] if available. (<code><GPR:mode><GPR2:mode>2_isel): Avoid for TARGET_FUTURE. (eq<mode>3): Use setbc for TARGET_FUTURE. (*eq<mode>3): Avoid for TARGET_FUTURE. (ne<mode>3): Replace :P with :GPR; use setbc for TARGET_FUTURE; else for non-Pmode, use gen_eq and gen_xor. (*ne<mode>3): Avoid for TARGET_FUTURE. (*eqsi3_ext<mode>): Avoid for TARGET_FUTURE; fix missing && 1.
2020-05-07Move all patterns and expanders out of h8300.md and into other files that ↵Jeff Law15-3144/+3159
are included into h8300.md * config/h8300/h8300.md: Move expanders and patterns into files based on functionality. * config/h8300/addsub.md: New file. * config/h8300/bitfield.md: New file * config/h8300/combiner.md: New file * config/h8300/divmod.md: New file * config/h8300/extensions.md: New file * config/h8300/jumpcall.md: New file * config/h8300/logical.md: New file * config/h8300/movepush.md: New file * config/h8300/multiply.md: New file * config/h8300/other.md: New file * config/h8300/proepi.md: New file * config/h8300/shiftrotate.md: New file * config/h8300/testcompare.md: New file commit da1de1d91088ac506c1bed0fba9b0f04c5b8c876
2020-05-07 More cleanups. Merging patterns with iterators, split out peepholes, etc.Jeff Law3-1805/+1649
* config/h8300/h8300.md (adds/subs splitters): Merge into single splitter. (negation expanders and patterns): Simplify and combine using iterators. (one_cmpl expanders and patterns): Likewise. (tablejump, indirect_jump patterns ): Likewise. (shift and rotate expanders and patterns): Likewise. (absolute value expander and pattern): Drop expander, rename pattern to just "abssf2" (peephole2 patterns): Move into... * config/h8300/peepholes.md: New file.
2020-05-07 Drop original H8/300 support. This should generate identical code for ↵Jeff Law8-1639/+683
the remaining subtargets. Defaults to H8/300H codegen * config/h8300/constraints.md (L and N): Simplify now that we're not longer supporting the original H8/300 chip. * config/h8300/elf.h (LINK_SPEC): Likewise. Default to H8/300H. * config/h8300/h8300.c (shift_alg_qi): Drop H8/300 support. (shift_alg_hi, shift_alg_si): Similarly. (h8300_option_overrides): Similarly. Default to H8/300H. If compiling for H8/S, then turn off H8/300H. Do not update the shift_alg tables for H8/300 port. (h8300_emit_stack_adjustment): Remove support for H8/300. Simplify where possible. (push, split_adds_subs, h8300_rtx_costs): Likewise. (h8300_print_operand, compute_mov_length): Likewise. (output_plussi, compute_plussi_length): Likewise. (compute_plussi_cc, output_logical_op): Likewise. (compute_logical_op_length, compute_logical_op_cc): Likewise. (get_shift_alg, h8300_shift_needs_scratch): Likewise. (output_a_shift, compute_a_shift_length): Likewise. (output_a_rotate, compute_a_rotate_length): Likewise. (output_simode_bld, h8300_hard_regno_mode_ok): Likewise. (h8300_modes_tieable_p, h8300_return_in_memory): Likewise. * config/h8300/h8300.h (TARGET_CPU_CPP_BUILTINS): Likewise. (attr_cpu, TARGET_H8300): Remove. (TARGET_DEFAULT): Update. (UNITS_PER_WORD, PARM_BOUNDARY): Simplify where possible. (BIGGEST_ALIGNMENT, STACK_BOUNDARY): Likewise. (CONSTANT_ADDRESS_P, MOVE_MAX, Pmode): Likewise. (SIZE_TYPE, POINTER_SIZE, ASM_WORD_OP): Likewise. * config/h8300/h8300.md: Simplify patterns throughout. * config/h8300/t-h8300: Update multilib configuration. @@ -82,11 +82,9 @@
2020-05-07Drop more COFF support from H8 portJeff Law2-6/+3
* config/h8300/h8300.h (LINK_SPEC): Remove. (USER_LABEL_PREFIX): Likewise.
2020-05-07Remove remnants of COFF support which was dropped eons ago.Jeff Law2-21/+5
* config/h8300/h8300.c (h8300_asm_named_section): Remove. (h8300_option_override): Remove remnants of COFF support.
2020-05-07libstdc++: Fix whitespace in ChangelogJonathan Wakely1-8/+8
2020-05-07libstdc++: Fix some C++20 algorithms to work in parallel modeJonathan Wakely4-23/+39
Some new algorithms need to use _GLIBCXX_STD_A to refer to the "normal" version of the algorithm, to workaround the namespace dance done for parallel mode. PR libstdc++/94971 (partial) * include/bits/ranges_algo.h (ranges::__sample_fn): Qualify std::sample using macro to work in parallel mode. (__sort_fn): Likewise for std::sort. (ranges::__nth_element_fn): Likewise for std::nth_element. * include/bits/stl_algobase.h (lexicographical_compare_three_way): Likewise for std::__min_cmp. * include/parallel/algobase.h (lexicographical_compare_three_way): Add to namespace std::__parallel.
2020-05-07libstdc++: Make relational operators work with const guarded iterators (PR ↵Jonathan Wakely2-12/+24
92472) This is a correct fix for the incorrect cppcheck suggestion to make these parameters const. In order to that, the dereference operators need to be const. The conversions to the underlying iterator can be const too. PR c/92472 * include/parallel/multiway_merge.h (_GuardedIterator::operator*) (_GuardedIterator::operator _RAIter, _UnguardedIterator::operator*) (_UnguardedIterator::operator _RAIter): Add const qualifier. (operator<(_GuardedIterator&, _GuardedIterator&) (operator<=(_GuardedIterator&, _GuardedIterator&) (operator<(_UnguardedIterator&, _UnguardedIterator&) (operator<=(_UnguardedIterator&, _UnguardedIterator&): Change parameters to const references.
2020-05-07coroutines: Improve error recovery [PR94817, PR94829].Iain Sandoe14-16/+195
When we have completely missing key information (e.g. the coroutine_traits) or a partially transformed function body, we need to try and balance returning useful information about failures with the possibility that some part of the diagnostics machinery or following code will not be able to handle the state. The PRs (and revised testcase) point to cases where that processing has failed. This revises the process to avoid special handling for the ramp, and falls back on the same code used for regular function fails. There are test-cases (in addition to the ones for the PRs) that now cover all early exit points [where the transforms are considered to have failed in a manner that does not allow compilation to continue]. gcc/cp/ChangeLog: 2020-05-07 Iain Sandoe <iain@sandoe.co.uk> PR c++/94817 PR c++/94829 * coroutines.cc (morph_fn_to_coro): Set unformed outline functions to error_mark_node. For early error returns suppress warnings about missing ramp return values. Fix reinstatement of the function body on pre-existing initial error. * decl.c (finish_function): Use the normal error path for fails in the ramp function, do not try to compile the helpers if the transform fails. gcc/testsuite/ChangeLog: 2020-05-07 Iain Sandoe <iain@sandoe.co.uk> PR c++/94817 PR c++/94829 * g++.dg/coroutines/coro-missing-final-suspend.C: New test. * g++.dg/coroutines/coro-missing-initial-suspend.C: New test. * g++.dg/coroutines/coro-missing-promise-yield.C: Check for continuation of compilation. * g++.dg/coroutines/coro-missing-promise.C: Likewise. * g++.dg/coroutines/coro-missing-ret-value.C: Likewise * g++.dg/coroutines/coro-missing-ret-void.C: Likewise * g++.dg/coroutines/coro-missing-ueh-3.C: Likewise * g++.dg/coroutines/pr94817.C: New test. * g++.dg/coroutines/pr94829.C: New test.
2020-05-07c-family: Add "nonstatic" to badwords.Marek Polacek2-0/+5
* c-format.c (badwords): Add "nonstatic".
2020-05-07c++: Detect long double -> double narrowing [PR94590]Marek Polacek4-1/+35
This PR points out that we don't detect long double -> double narrowing when long double happens to have the same precision as double; on x86_64 this can be achieved by -mlong-double-64. [dcl.init.list]#7.2 specifically says "from long double to double or float, or from double to float", but check_narrowing only checks TYPE_PRECISION (type) < TYPE_PRECISION (ftype) so we need to handle the other cases too, e.g. by same_type_p as in the following patch. PR c++/94590 - Detect long double -> double narrowing. * typeck2.c (check_narrowing): Detect long double -> double narrowing even when double and long double have the same precision. Make it handle conversions to float too. * g++.dg/cpp0x/Wnarrowing18.C: New test.
2020-05-07c++: Fix crash with template spec in different namespace [PR94255]Marek Polacek4-1/+34
This is an ICE on invalid, because we're specializing S::foo in the wrong namespace. cp_parser_class_specifier_1 parses S::foo in M and then it tries to push the nested-name-specifier of foo, which is S. By that, we're breaking the assumption of push_inner_scope that the pushed scope must be a scope nested inside current scope: current scope is M, but the namespace context of S is N, and N is not nested in M, so we fell into an infinite loop in push_inner_scope_r. (cp_parser_class_head called check_specialization_namespace which already gave a permerror.) PR c++/94255 * parser.c (cp_parser_class_specifier_1): Check that the scope is nested inside current scope before pushing it. * g++.dg/template/spec41.C: New test.
2020-05-07Fix bogus calls to set_rtx_cost.Alan Modra3-4/+12
* tree-ssa-reassoc.c (optimize_range_tests_to_bit_test): Replace set_rtx_cost with set_src_cost. * tree-switch-conversion.c (bit_test_cluster::emit): Likewise.
2020-05-07Check alignment for no peeling gaps handlingKewen Lin2-9/+18
* gcc/tree-vect-stmts.c (vectorizable_load): Check alignment to avoid redundant half vector handlings for no peeling gaps.
2020-05-07Wrap global variables in tree-ssa-operands.c into a class.Giuliano Belinassi2-117/+216
* tree-ssa-operands.c (operands_scanner): New class. (operands_bitmap_obstack): Remove. (n_initialized): Remove. (build_uses): Move to operands_scanner class. (build_vuse): Same as above. (build_vdef): Same as above. (verify_ssa_operands): Same as above. (finalize_ssa_uses): Same as above. (cleanup_build_arrays): Same as above. (finalize_ssa_stmt_operands): Same as above. (start_ssa_stmt_operands): Same as above. (append_use): Same as above. (append_vdef): Same as above. (add_virtual_operand): Same as above. (add_stmt_operand): Same as above. (get_mem_ref_operands): Same as above. (get_tmr_operands): Same as above. (maybe_add_call_vops): Same as above. (get_asm_stmt_operands): Same as above. (get_expr_operands): Same as above. (parse_ssa_operands): Same as above. (finalize_ssa_defs): Same as above. (build_ssa_operands): Same as above, plus create a C-like wrapper. (update_stmt_operands): Create an instance of operands_scanner.
2020-05-07c++: Implement P1957R2, T* to bool should be considered narrowing.Marek Polacek4-4/+16
This was approved in the Prague 2020 WG21 meeting so let's adjust the comment. Since it's supposed to be a DR I think we should no longer limit it to C++20. P1957R2 * typeck2.c (check_narrowing): Consider T* to bool narrowing in C++11 and up. * g++.dg/cpp0x/initlist92.C: Don't expect an error in C++20 only.
2020-05-07ipa/94947 - avoid using externally_visible_p ()Richard Biener2-4/+16
externally_visible_p wasn't the correct predicate to use (even if it worked), instead we should use DECL_EXTERNAL || TREE_PUBLIC. 2020-05-07 Richard Biener <rguenther@suse.de> PR ipa/94947 * tree-ssa-structalias.c (refered_from_nonlocal_fn): Use DECL_EXTERNAL || TREE_PUBLIC instead of externally_visible. (refered_from_nonlocal_var): Likewise. (ipa_pta_execute): Likewise.
2020-05-07Fix various dg directives.Manfred Schwarb34-60/+94
* gcc.dg/20050121-1.c: Fix broken dg directives. * gcc.dg/analzyer/pr93382.c: Likewise. * gcc.dg/autopar/pr68460.c: Likewise. * gcc.dg/c90-fordecl-1.c: Likewise. * gcc.dg/cpp/trad/funlike-5.c: Likewise. * gcc.dg/debug/dwarf2/dwarf-dfp.c: Likewise. * gcc.dg/debug/dwarf2/dwarf-float.c: Likewise. * gcc.dg/lto/pr52634_0.c: Likewise. * gcc.dg/pr32069.c: Likewise. * gcc.dg/pr35445.c: Likewise. * gcc.dg/pr40172-3.c: Likewise. * gcc.dg/pr87347.c: Likewise. * gcc.dg/pr88660.c: Likewise. * gcc.dg/pr89689.c: Likewise. * gcc.dg/sinatan-2.c: Likewise. * gcc.dg/sinhatanh-1.c: Likewise. * gcc.dg/sinhovercosh-1.c: Likewise. * gcc.dg/tls/opt-9.c: Likewise. * gcc.dg/torture/builtins-1.c: Likewise. * gcc.dg/torture/pr51106-1.c: Likewise. * gcc.dg/torture/pr51106-2.c: Likewise. * gcc.dg/torture/pr80281.c: Likewise. * gcc.dg/torture/pr92252.c: Likewise. * gcc.dg/tree-ssa/pr79448-2.c: Likewise. * gcc.dg/tree-ssa/pr79448.c: Likewise. * gcc.dg/tree-ssa/pr92163.c: Likewise. * gcc.dg/tree-ssa/reassoc-28.c: Likewise. * gcc.dg/tree-ssa/upcast-1.c: Likewise. * gcc.dg/two-types-6.c: Likewise. * gcc.dg/ubsan/c-shift-1.c: Likewise. * gcc.dg/var-expand3.c: Likewise. * gcc.dg/vect/costmodel/x86_64/costmodel-pr30843.c: Likewise. * gcc.dg/vect/pr71264.c: Likewise.
2020-05-07c++: Fix spelling of non-staticMarek Polacek13-22/+34
I was looking at DR 296 and noticed that we say "nonstatic" instead of "non-static", which is the version the standard uses. So this patch fixes the spelling throughout the front end. Did not check e.g. non-dependent or any other. * decl.c (grok_op_properties): Fix spelling of non-static. * typeck.c (build_class_member_access_expr): Likewise. * g++.dg/other/operator1.C: Adjust expected message. * g++.dg/overload/operator2.C: Likewise. * g++.dg/template/error30.C: Likewise. * g++.old-deja/g++.jason/operator.C: Likewise.
2020-05-07Fix minor typos in comments that affected syntax highlighting.Erick Ochoa2-4/+8
* gcc/tree-ssa-struct-alias.c: Fix comments