- 19 Apr, 2019 4 commits
-
-
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 -
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 -
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 -
From-SVN: r270451
GCC Administrator committed
-
- 18 Apr, 2019 16 commits
-
-
PR rtl-optimization/87871 * ira-lives.c (make_object_dead): Don't add conflicts to TOTAL_CONFLICT_HARD_REGS for register ignore_reg_for_conflicts. From-SVN: r270448
Peter Bergner committed -
gcc/ChangeLog: * tree.h (TYPE_VECTOR_SUBPARTS): Use HOST_WIDE_INT_1U. * config/aarch64/aarch64.c (aarch64_simd_vector_alignment): Avoid assuming type size fits in SHWI. From-SVN: r270447
Martin Sebor committed -
PR ipa/85051 * ipa-inline.c (flatten_function): New parameter UPDATE. (ipa_inline, early_inliner): Use it. From-SVN: r270446
Jan Hubicka committed -
The removed code ended up setting DECL_INITIAL to the INIT_EXPR returned by split_nonconstant_init, which makes no sense. This code was added back in 1996, so any rationale is long lost. * decl.c (cp_finish_decl): Don't set DECL_INITIAL of external vars. From-SVN: r270445
Jason Merrill committed -
From-SVN: r270444
Segher Boessenkool committed -
When testing PR 85164, the baseline bootstrap-ubsan results had a lot of failures from int_const_binop. This is because with the new overflow handling we can sometimes do: poly_res = res; on an uninitialised res. 2019-04-18 Richard Sandiford <richard.sandiford@arm.com> gcc/ * fold-const.c (int_const_binop): Return early on failure. From-SVN: r270443
Richard Sandiford committed -
Two fixes for UB when handling very large offsets. The calculation in force_int_to_mode would have been correct if signed integers used modulo arithmetic, so just switch to unsigned types. The calculation in rtx_addr_can_trap_p_1 didn't handle overflow properly, so switch to known_subrange_p instead (which is supposed to handle all cases). 2019-04-18 Richard Sandiford <richard.sandiford@arm.com> gcc/ PR middle-end/85164 * combine.c (force_int_to_mode): Cast the argument rather than the result of known_alignment. * rtlanal.c (rtx_addr_can_trap_p_1): Use known_subrange_p. gcc/testsuite/ PR middle-end/85164 * gcc.dg/pr85164-1.c, gcc.dg/pr85164-2.c: New tests. From-SVN: r270442
Richard Sandiford committed -
2019-04-18 Richard Biener <rguenther@suse.de> PR debug/90131 * tree-cfgcleanup.c (move_debug_stmts_from_forwarder): Split out from ... (remove_forwarder_block): ... here. (remove_forwarder_block_with_phi): Also move debug stmts here. * gcc.dg/guality/pr90131.c: New testcase. From-SVN: r270441
Richard Biener committed -
From-SVN: r270439
Jakub Jelinek committed -
PR translation/79183 * gimple-ssa-sprintf.c (format_directive): Use inform_n instead of inform where appropriate. From-SVN: r270438
Jakub Jelinek committed -
2019-04-18 Richard Biener <rguenther@suse.de> * tree.c (get_qualified_type): Put found type variants at the head of the variant list. From-SVN: r270437
Richard Biener committed -
2019-04-18 Iain Sandoe <iain@sandoe.co.uk> * MAINTAINERS: Update my email address. From-SVN: r270436
Iain Sandoe committed -
fix PR89864 2019-04-18 Erik Schnetter <schnetter@gmail.com> Jakub Jelinek <jakub@redhat.com> Iain Sandoe <iain@sandoe.co.uk> PR bootstrap/89864 * inclhack.def (darwin_ucred__Atomic): New, work around _Atomic keyword use in headers included by C++. * fixincl.x: Regenerated. Co-Authored-By: Iain Sandoe <iain@sandoe.co.uk> Co-Authored-By: Jakub Jelinek <jakub@redhat.com> From-SVN: r270435
Erik Schnetter committed -
PR go/90110 compiler: use temporary to avoid early destruction The code was passing a substr directly to strtol, and then checking the *end value returned by strtol. But the substr could be destroyed as soon as strtol returns, making the test of *end invalid. Also fix an incorrect test of the string index rather than the value. Fixes https://gcc.gnu.org/PR90110 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/172663 From-SVN: r270434
Ian Lance Taylor committed -
In order to make alias templates useful for SFINAE we instantiate them under the prevailing 'complain' argument, so an error encountered while instantiating during SFINAE context is silent. The problem in this PR comes when we later look up the erroneous instantiation and don't give an error at that point. Fixed by not adding an erroneous instantiation to the hash table, so we instantiate it again when needed and get the error. This required changes to a number of tests, which previously said "substitution failed:" with no explanation of what the failure was; now we properly explain. * pt.c (tsubst_decl) [TYPE_DECL]: Don't put an erroneous decl in the hash table when we're in SFINAE context. From-SVN: r270433
Jason Merrill committed -
From-SVN: r270430
GCC Administrator committed
-
- 17 Apr, 2019 20 commits
-
-
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 -
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 -
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 -
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 -
* 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 -
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 -
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 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 -
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 -
* 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 __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 -
From-SVN: r270416
Jonny Grant committed -
* 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 -
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 -
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 -
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 -
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 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 -
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 -
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
-