1. 19 Apr, 2019 4 commits
    • re PR c/89888 (When switch controlling expression is promoted from type narrower… · c280b7ee
      re PR c/89888 (When switch controlling expression is promoted from type narrower than int, GCC does not diagnose identical cases)
      
      	PR c/89888
      	* c-common.h (c_add_case_label): Remove orig_type and outside_range_p
      	arguments.
      	(c_do_switch_warnings): Remove outside_range_p argument.
      	* c-common.c (check_case_bounds): Removed.
      	(c_add_case_label): Remove orig_type and outside_range_p arguments.
      	Don't call check_case_bounds.  Fold low_value as well as high_value.
      	* c-warn.c (c_do_switch_warnings): Remove outside_range_p argument.
      	Check for case labels outside of range of original type here and
      	adjust them.
      c/
      	* c-typeck.c (struct c_switch): Remove outside_range_p member.
      	(c_start_case): Don't clear it.
      	(do_case): Adjust c_add_case_label caller.
      	(c_finish_case): Adjust c_do_switch_warnings caller.
      cp/
      	* decl.c (struct cp_switch): Remove outside_range_p member.
      	(push_switch): Don't clear it.
      	(pop_switch): Adjust c_do_switch_warnings caller.
      	(finish_case_label): Adjust c_add_case_label caller.
      testsuite/
      	* c-c++-common/pr89888.c: New test.
      	* g++.dg/torture/pr40335.C: Change dg-bogus into dg-warning.
      	Don't expect -Wswitch-unreachable warning.
      
      From-SVN: r270455
      Jakub Jelinek committed
    • PR translation/90118 Missing space between words · 41804907
      2019-04-19  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	PR translation/90118
      
      	contrib/
      	* check-internal-format-escaping.py: Check that %< is not next to
      	a word.
      
      	gcc/
      	* config/aarch64/aarch64.c (aarch64_override_options_internal):
      	Add missing space before %<.
      
      From-SVN: r270454
      Christophe Lyon committed
    • re PR c++/90108 (ICE: Segmentation fault (in c_tree_chain_next)) · e7178413
      	PR c++/90108
      	* c-decl.c (merge_decls): If remove is main variant and
      	DECL_ORIGINAL_TYPE is some other type, remove a DECL_ORIGINAL_TYPE
      	variant that has newdecl as TYPE_NAME if any.
      
      	* decl.c (duplicate_decls): If remove is main variant and
      	DECL_ORIGINAL_TYPE is some other type, remove a DECL_ORIGINAL_TYPE
      	variant that has newdecl as TYPE_NAME if any.
      
      	* c-c++-common/pr90108.c: New test.
      
      From-SVN: r270453
      Jakub Jelinek committed
    • Daily bump. · 1ad6b210
      From-SVN: r270451
      GCC Administrator committed
  2. 18 Apr, 2019 16 commits
  3. 17 Apr, 2019 20 commits
    • PR libstdc++/90105 make forward_list::sort stable · 8c710065
      While testing the fix I also discovered that operator== assumes the
      elements are comparable with operator!= which is not required.
      
      	PR libstdc++/90105
      	* include/bits/forward_list.h (operator==): Do not use operator!= to
      	compare elements.
      	(forward_list<T, A>::sort(Comp)): When elements are equal take the one
      	earlier in the list, so that sort is stable.
      	* testsuite/23_containers/forward_list/operations/90105.cc: New test.
      	* testsuite/23_containers/forward_list/comparable.cc: Test with
      	types that meet the minimum EqualityComparable and LessThanComparable
      	requirements. Remove irrelevant comment.
      
      From-SVN: r270427
      Jonathan Wakely committed
    • rs6000: Remove a comma in a debug string · 2ad37a09
      It is a bit confusing, it looks as if the compiler tried to print
      something there.
      
      
      	* config/rs6000/rs6000.c (rs6000_register_move_cost): Fix typo.
      
      From-SVN: r270426
      Segher Boessenkool committed
    • Fix condition for std::variant to be copy constructible · 5f00d0d5
      The standard says the std::variant copy constructor is defined as
      deleted unless all alternative types are copy constructible, but we were
      making it also depend on move constructible. Fix the condition and
      enhance the tests to check the semantics with pathological copy-only
      types (i.e. supporting copying but having deleted moves).
      
      The enhanced tests revealed a regression in copy assignment for
      non-trivial alternative types, where the assignment would not be
      performed because the condition in the _Copy_assign_base visitor is
      false: is_same_v<remove_reference_t<T&>, remove_reference_t<const T&>>.
      
      	* include/std/variant (__detail::__variant::_Traits::_S_copy_assign):
      	Do not depend on whether all alternative types are move constructible.
      	(__detail::__variant::_Copy_assign_base::operator=): Remove cv-quals
      	from the operand when deciding whether to perform the assignment.
      	* testsuite/20_util/variant/compile.cc (DeletedMoves): Define type
      	with deleted move constructor and deleted move assignment operator.
      	(default_ctor, copy_ctor, move_ctor, copy_assign, move_assign): Check
      	behaviour of variants with DeletedMoves as an alternative.
      	* testsuite/20_util/variant/run.cc (DeletedMoves): Define same type.
      	(move_ctor, move_assign): Check that moving a variant with a
      	DeletedMoves alternative falls back to copying instead of moving.
      
      From-SVN: r270425
      Jonathan Wakely committed
    • Remove unnecessary string literals from static_assert in C++17 tests · 990666d0
      The string literal is optional in C++17 and all these are empty so add
      no value.
      
      	* testsuite/20_util/variant/compile.cc: Remove empty string literals
      	from static_assert declarations.
      
      From-SVN: r270424
      Jonathan Wakely committed
    • Fix tests for std::variant to match original intention · 9d3e662d
      	* testsuite/20_util/variant/compile.cc (MoveCtorOnly): Fix type to
      	actually match its name.
      	(MoveCtorAndSwapOnly): Define new type that adds swap to MoveCtorOnly.
      	(test_swap()): Fix result for MoveCtorOnly and check
      	MoveCtorAndSwapOnly.
      
      From-SVN: r270423
      Jonathan Wakely committed
    • re PR c++/89325 (False warnings about "optimization attribute" on operators when -fno-ipa-cp-clone) · 747742f6
      	PR c++/89325
      	* g++.dg/ext/attrib58.C: New test.
      	* g++.dg/ext/attrib59.C: New test.
      	* g++.dg/ext/attrib60.C: New test.
      
      From-SVN: r270422
      Jakub Jelinek committed
    • re PR target/90125 (Typo of AVX512 intrinsics) · aadd9a6e
      	PR target/90125
      	* config/i386/avx512fintrin.h (_mm_maskz_fmadd_round_sd,
      	_mm_maskz_fmadd_round_ss, _mm_maskz_fmsub_round_sd,
      	_mm_maskz_fmsub_round_ss, _mm_maskz_fnmadd_round_sd,
      	_mm_maskz_fnmadd_round_ss, _mm_maskz_fnmsub_round_sd,
      	_mm_maskz_fnmsub_round_ss): Use _maskz builtin instead of _mask3.
      
      	PR target/90125
      	* gcc.target/i386/avx512f-vfmsubXXXss-2.c (avx512f_test): Adjust
      	constants to ensure precise result even when not using fma.
      	* gcc.target/i386/avx512f-vfnmaddXXXss-2.c (avx512f_test): Likewise.
      	* gcc.target/i386/avx512f-vfmaddXXXsd-3.c: New test.
      	* gcc.target/i386/avx512f-vfmaddXXXss-3.c: New test.
      	* gcc.target/i386/avx512f-vfmsubXXXsd-3.c: New test.
      	* gcc.target/i386/avx512f-vfmsubXXXss-3.c: New test.
      	* gcc.target/i386/avx512f-vfnmaddXXXsd-3.c: New test.
      	* gcc.target/i386/avx512f-vfnmaddXXXss-3.c: New test.
      	* gcc.target/i386/avx512f-vfnmsubXXXsd-3.c: New test.
      	* gcc.target/i386/avx512f-vfnmsubXXXss-3.c: New test.
      
      From-SVN: r270421
      Jakub Jelinek committed
    • ira-conflicts.c (print_allocno_conflicts): Always print something, even for… · 38de8b39
      ira-conflicts.c (print_allocno_conflicts): Always print something, even for allocno's with no conflicts.
      
      gcc/
      	* ira-conflicts.c (print_allocno_conflicts): Always print something,
      	even for allocno's with no conflicts.
      	(print_conflicts): Print an extra newline.
      
      From-SVN: r270420
      Peter Bergner committed
    • auto-inc-dec: Set alignment properly · 46786144
      When auto-inc-dec creates a new mem to compute the cost of doing some
      transform, it forgets to copy over the alignment of the original mem.
      This gives wrong costs, for example, for rs6000 a floating point load
      or store is hugely expensive if unaligned.  This patch fixes it.
      
      
      	* auto-inc-dec.c (attempt_change): Set the alignment of the
      	temporary memory to that of the original.
      
      From-SVN: r270419
      Segher Boessenkool committed
    • PR c++/90124 - bogus error with incomplete type in decltype. · f64e8977
      	* typeck.c (build_class_member_access_expr): Check
      	cp_unevaluated_operand.
      
      	* g++.dg/cpp0x/decltype70.C: New test.
      
      From-SVN: r270418
      Marek Polacek committed
    • targhooks.c (default_print_patchable_function_entry): Emit… · 62a64d0a
      targhooks.c (default_print_patchable_function_entry): Emit __patchable_function_entries section with writable flags to allow...
      
      	* targhooks.c (default_print_patchable_function_entry): Emit
      	__patchable_function_entries section with writable flags to allow
      	relocation resolution.
      
      From-SVN: r270417
      Joao Moreira committed
    • * collect2.c (main): Change gcc.gnu.org URL to HTTPS. · e050689b
      From-SVN: r270416
      Jonny Grant committed
    • dg-extract-results.sh: Only handle WARNING: program timed out lines specially in "$MODE" == "sum". · ec60715d
      	* dg-extract-results.sh: Only handle WARNING: program timed out
      	lines specially in "$MODE" == "sum".  Restore previous behavior
      	for "$MODE" != "sum".  Clear has_timeout and timeout_cnt if in
      	a different variant or curfile is empty.
      	* dg-extract-results.py: Fix a typo.
      
      From-SVN: r270415
      Jakub Jelinek committed
    • re PR middle-end/90095 (wrong code with -Os -fno-tree-bit-ccp) · 0764a0d2
      	PR middle-end/90095
      	* internal-fn.c (expand_mul_overflow): Don't set SUBREG_PROMOTED_VAR_P
      	on lowpart SUBREGs.
      
      	* gcc.dg/pr90095-1.c: New test.
      	* gcc.dg/pr90095-2.c: New test.
      
      From-SVN: r270410
      Jakub Jelinek committed
    • Add constexpr to std::optional::value_or(U&&)&& · 02c9b9cc
      In C++1z drafts up to N4606 the constexpr keyword was missing from the
      detailed description of this function, despite being shown in the class
      synopsis.  That was fixed editorially for N4618, but our implementation
      was not corrected to match.
      
      	* include/std/optional (optional::value_or(U&&) &&): Add missing
      	constexpr specifier.
      	* testsuite/20_util/optional/constexpr/observers/4.cc: Check value_or
      	for disengaged optionals and rvalue optionals.
      	* testsuite/20_util/optional/observers/4.cc: Likewise.
      
      From-SVN: r270409
      Jonathan Wakely committed
    • [ARC][COMMITTED] Fix diagnostic messages. · 2fa9c1f6
      Apply upper/dot rule on diagnostic messages.
      
      gcc/
      xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/arc.c (arc_init): Format diagnostic string.
      	(arc_override_options): Likewise.
      	(check_if_valid_regno_const): Likewise.
      	(arc_reorg): Likewise.
      
      From-SVN: r270408
      Claudiu Zissulescu committed
    • rs6000: Improve the load/store-with-update patterns (PR17108) · 61943f94
      Many of these patterns only worked in 32-bit mode, and some only worked
      in 64-bit mode.  This patch makes these use Pmode, fixing the PR.  On
      the other hand, the stack updates have to use the same mode for the
      stack pointer as for the value stored, so let's simplify that a bit.
      
      Many of these patterns pass the wrong mode to
      avoiding_indexed_address_p (it should be the mode of the datum
      accessed, not the mode of the pointer).
      
      Finally, I merge some patterns into one (using iterators).
      
      
      	PR target/17108
      	* config/rs6000/rs6000.c (rs6000_split_multireg_move): Adjust pattern
      	name.
      	(rs6000_emit_allocate_stack_1): Simplify condition.  Adjust pattern
      	name.
      	* config/rs6000/rs6000.md (bits): Add entries for SF and DF.
      	(*movdi_update1): Use Pmode.
      	(movdi_<mode>_update): Fix argument to avoiding_indexed_address_p.
      	(movdi_<mode>_update_stack): Rename to ...
      	(movdi_update_stack): ... this.  Fix comment.  Change condition. Don't
      	use Pmode.
      	(*movsi_update1): Use Pmode.
      	(*movsi_update2): Use Pmode.
      	(movsi_update): Rename to ...
      	(movsi_<mode>_update): ... this.  Use Pmode.
      	(movsi_update_stack): Fix condition.
      	(*movhi_update1): Use Pmode.  Fix argument to
      	avoiding_indexed_address_p.
      	(*movhi_update2): Ditto.
      	(*movhi_update3): Ditto.
      	(*movhi_update4): Ditto.
      	(*movqi_update1): Ditto.
      	(*movqi_update2): Ditto.
      	(*movqi_update3): Ditto.
      	(*movsf_update1, *movdf_update1): Merge, rename to...
      	(*mov<mode>_update1): This.  Use Pmode.  Fix argument to
      	avoiding_indexed_address_p.  Add "size" attribute.
      	(*movsf_update2, *movdf_update2): Merge, rename to...
      	(*mov<mode>_update2): This.  Ditto.
      	(*movsf_update3): Use Pmode.  Fix argument to
      	avoiding_indexed_address_p.
      	(*movsf_update4): Ditto.
      	(allocate_stack): Simplify condition.  Adjust pattern names.
      
      From-SVN: r270407
      Segher Boessenkool committed
    • [PR90048] Fortran OpenACC 'private' clause rejected for predetermined private… · b39c686b
      [PR90048] Fortran OpenACC 'private' clause rejected for predetermined private loop iteration variable
      
      	gcc/fortran/
      	PR fortran/90048
      	* openmp.c (gfc_resolve_do_iterator): Handle sharing_clauses for
      	OpenACC, too.
      	(gfc_resolve_oacc_blocks): Populate sharing_clauses with private
      	clauses.
      	gcc/testsuite/
      	PR fortran/90048
      	* gfortran.dg/goacc/private-explicit-kernels-1.f95: New file.
      	* gfortran.dg/goacc/private-explicit-parallel-1.f95: Likewise.
      	* gfortran.dg/goacc/private-explicit-routine-1.f95: Likewise.
      
      From-SVN: r270406
      Thomas Schwinge committed
    • [PR90067, PR90114] Document Fortran OpenACC predetermined private status quo · 04017685
      	gcc/testsuite/
      	PR fortran/90067
      	PR fortran/90114
      	* gfortran.dg/goacc/private-1.f95: Remove file.
      	* gfortran.dg/goacc/private-2.f95: Likewise.
      	* gfortran.dg/goacc/private-predetermined-kernels-1.f95: New file.
      	* gfortran.dg/goacc/private-predetermined-parallel-1.f95:
      	Likewise.
      	* gfortran.dg/goacc/private-predetermined-routine-1.f95: Likewise.
      
      From-SVN: r270405
      Thomas Schwinge committed
    • re PR target/89093 (C++ exception handling clobbers d8 VFP register) · fc2b6858
      	PR target/89093
      	* config/arm/arm.c (arm_valid_target_attribute_rec): Don't skip
      	whitespace at the start of target attribute string.
      
      	* gcc.target/arm/pr89093-2.c: New test.
      
      From-SVN: r270404
      Jakub Jelinek committed