- 24 Feb, 2020 24 commits
-
-
PR analyzer/93032 tracks a false negative where we fail to report FILE * leaks within zlib/contrib/minizip/mztools.c. The underlying issue is a combinatorial explosion of states within the exploded graph. In particular, the state of the "taint" checker is exploding, leading to the analyzer bailing out. I have a patch kit under construction that fixes the state explosion issue enough for the "file" checker to report the leaks, but doing so requires disabling the "taint" checker. Given that the latter is more of a proof-of-concept, this patch disables it by default, to stop it breaking the other checkers. gcc/analyzer/ChangeLog: PR analyzer/93032 * sm.cc (make_checkers): Require the "taint" checker to be explicitly enabled. gcc/ChangeLog: PR analyzer/93032 * doc/invoke.texi (-Wnanalyzer-tainted-array-index): Note that -fanalyzer-checker=taint is also required. (-fanalyzer-checker=): Note that providing this option enables the given checker, and doing so may be required for checkers that are disabled by default. gcc/testsuite/ChangeLog: PR analyzer/93032 * gcc.dg/analyzer/pr93382.c: Add "-fanalyzer-checker=taint". * gcc.dg/analyzer/taint-1.c: Likewise.
David Malcolm committed -
PR analyzer/93899 reports an ICE within make_region_for_type when handling a param of type OFFSET_TYPE within exploded_graph::add_function_entry. This patch fixes the ICE by further generalizing the "give up on this tree code" logic from r10-6667-gf76a88eb for PR analyzer/93388 and r10-6695-g2e623393 for PR analyzer/93778 by replacing the gcc_unreachable in make_region_for_type with a return of NULL, and handling this in add_region_for_type by notifying the ctxt. Doing so means that numerous places that create regions now need to have a context passed to them, so most of the patch is churn involved in passing a context around to where it's needed. gcc/analyzer/ChangeLog: PR analyzer/93899 * engine.cc (impl_region_model_context::impl_region_model_context): Add logger param. * engine.cc (exploded_graph::add_function_entry): Create an impl_region_model_context and pass it to the push_frame call. Bail if the resulting state is invalid. (exploded_graph::build_initial_worklist): Likewise. (exploded_graph::build_initial_worklist): Handle the case where add_function_entry fails. * exploded-graph.h (impl_region_model_context::impl_region_model_context): Add logger param. * region-model.cc (map_region::get_or_create): Add ctxt param and pass it to add_region_for_type. (map_region::can_merge_p): Pass NULL as a ctxt to call to get_or_create. (array_region::get_element): Pass ctxt to call to get_or_create. (array_region::get_or_create): Add ctxt param and pass it to add_region_for_type. (root_region::push_frame): Pass ctxt to get_or_create calls. (region_model::get_lvalue_1): Likewise. (region_model::make_region_for_unexpected_tree_code): Assert that ctxt is non-NULL. (region_model::get_rvalue_1): Pass ctxt to get_svalue_for_fndecl and get_svalue_for_label calls. (region_model::get_svalue_for_fndecl): Add ctxt param and pass it to get_region_for_fndecl. (region_model::get_region_for_fndecl): Add ctxt param and pass it to get_or_create. (region_model::get_svalue_for_label): Add ctxt param and pass it to get_region_for_label. (region_model::get_region_for_label): Add ctxt param and pass it to get_region_for_fndecl and get_or_create. (region_model::get_field_region): Add ctxt param and pass it to get_or_create_view and get_or_create. (make_region_for_type): Replace gcc_unreachable with return NULL. (region_model::add_region_for_type): Add ctxt param. Handle a return of NULL from make_region_for_type by calling make_region_for_unexpected_tree_code. (region_model::get_or_create_mem_ref): Pass ctxt to calls to get_or_create_view. (region_model::get_or_create_view): Add ctxt param and pass it to add_region_for_type. (selftest::test_state_merging): Pass ctxt to get_or_create_view. * region-model.h (region_model::get_or_create): Add ctxt param. (region_model::add_region_for_type): Likewise. (region_model::get_svalue_for_fndecl): Likewise. (region_model::get_svalue_for_label): Likewise. (region_model::get_region_for_fndecl): Likewise. (region_model::get_region_for_label): Likewise. (region_model::get_field_region): Likewise. (region_model::get_or_create_view): Likewise. gcc/testsuite/ChangeLog: PR analyzer/93899 * g++.dg/analyzer/pr93899.C: New test.
David Malcolm committed -
Patch from Svante Signell. Fixes GCC PR go/93900 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/220592
Ian Lance Taylor committed -
gcc/cp/ChangeLog: * parser.c (cp_parser_check_class_key): Remove a duplicate hunk of code.
Martin Sebor committed -
gcc/cp/ChangeLog: PR c++/93804 * parser.c (cp_parser_check_class_key): Avoid issuing -Wredundant-tags in shared C/C++ code in headers. gcc/testsuite/ChangeLog: PR c++/93804 * g++.dg/warn/Wredundant-tags-4.C: New test. * g++.dg/warn/Wredundant-tags-5.C: New test. * g++.dg/warn/Wredundant-tags-5.h: New test.
Martin Sebor committed -
Paths emitted by the analyzer can be quite verbose at the default of -fanalyzer-verbosity=2. Consider the double-free in this example: #include <stdlib.h> int foo (); int bar (); void test (int a, int b, int c) { void *p = malloc (1024); while (a) foo (); if (b) foo (); else bar (); if (c) free (p); free (p); } Previously, the analyzer would emit a checker_path containing all control-flow information on the exploded_path leading to the double-free: test.c: In function 'test': test.c:17:3: warning: double-'free' of 'p' [CWE-415] [-Wanalyzer-double-free] 17 | free (p); | ^~~~~~~~ 'test': events 1-9 | | 8 | void *p = malloc (1024); | | ^~~~~~~~~~~~~ | | | | | (1) allocated here | 9 | while (a) | | ~ | | | | | (2) following 'false' branch (when 'a == 0')... | 10 | foo (); | 11 | if (b) | | ~ | | | | | (3) ...to here | | (4) following 'false' branch (when 'b == 0')... |...... | 14 | bar (); | | ~~~~~~ | | | | | (5) ...to here | 15 | if (c) | | ~ | | | | | (6) following 'true' branch (when 'c != 0')... | 16 | free (p); | | ~~~~~~~~ | | | | | (7) ...to here | | (8) first 'free' here | 17 | free (p); | | ~~~~~~~~ | | | | | (9) second 'free' here; first 'free' was at (8) | despite the fact that only the "if (c)" is relevant to triggering the double-free. This patch implements pruning of control flow events at -fanalyzer-verbosity=2, based on reachability information within the exploded_graph. The diagnostic_manager pre-computes reachability information about which exploded_nodes can reach the exploded_node of the diagnostic, and uses this to prune irrelvent control flow edges. The patch also adds a -fanalyzer-verbosity=3 to preserve these edges, so that the "show me everything" debugging level becomes -fanalyzer-verbosity=4. With these changes, the "while (a)" and "if (b)" edges are pruned from the above example, leading to: test.c: In function 'test': test.c:17:3: warning: double-'free' of 'p' [CWE-415] [-Wanalyzer-double-free] 17 | free (p); | ^~~~~~~~ 'test': events 1-5 | | 8 | void *p = malloc (1024); | | ^~~~~~~~~~~~~ | | | | | (1) allocated here |...... | 15 | if (c) | | ~ | | | | | (2) following 'true' branch (when 'c != 0')... | 16 | free (p); | | ~~~~~~~~ | | | | | (3) ...to here | | (4) first 'free' here | 17 | free (p); | | ~~~~~~~~ | | | | | (5) second 'free' here; first 'free' was at (4) | The above example is gcc.dg/analyzer/edges-2.c. gcc/analyzer/ChangeLog: * checker-path.cc (superedge_event::should_filter_p): Update filter for empty descriptions to cover verbosity level 3 as well as 2. * diagnostic-manager.cc: Include "analyzer/reachability.h". (class path_builder): New class. (diagnostic_manager::emit_saved_diagnostic): Create a path_builder and pass it to build_emission_path, rather passing eg; similarly for add_events_for_eedge and ext_state. (diagnostic_manager::build_emission_path): Replace "eg" param with a path_builder, pass it to add_events_for_eedge. (diagnostic_manager::add_events_for_eedge): Replace ext_state param with path_builder; pass it to add_events_for_superedge. (diagnostic_manager::significant_edge_p): New. (diagnostic_manager::add_events_for_superedge): Add path_builder param. Reject insignificant edges at verbosity levels below 3. (diagnostic_manager::prune_for_sm_diagnostic): Update highest verbosity level to 4. * diagnostic-manager.h (class path_builder): New forward decl. (diagnostic_manager::build_emission_path): Replace "eg" param with a path_builder. (diagnostic_manager::add_events_for_eedge): Replace ext_state param with path_builder. (diagnostic_manager::significant_edge_p): New. (diagnostic_manager::add_events_for_superedge): Add path_builder param. * reachability.h: New file. gcc/ChangeLog: * doc/invoke.texi (-fanalyzer-verbosity=): "2" only shows significant control flow events; add a "3" which shows all control flow events; the old "3" becomes "4". gcc/testsuite/ChangeLog: * gcc.dg/analyzer/analyzer-verbosity-2a.c: New test. * gcc.dg/analyzer/analyzer-verbosity-3.c: New test, based on analyzer-verbosity-2.c * gcc.dg/analyzer/analyzer-verbosity-3a.c: New test. * gcc.dg/analyzer/edges-1.c: New test. * gcc.dg/analyzer/edges-2.c: New test. * gcc.dg/analyzer/file-paths-1.c: Add -fanalyzer-verbosity=3.David Malcolm committed -
This is a crash in cp_parser_check_class_key: tree type_decl = TYPE_MAIN_DECL (type); tree name = DECL_NAME (type_decl); // HERE because TYPE_MAIN_DECL of type was null as it's not a class type. Instead of checking CLASS_TYPE_P we should simply check class_key a bit earlier (in this case it was typename_type). 2020-02-24 Marek Polacek <polacek@redhat.com> PR c++/93869 - ICE with -Wmismatched-tags. * parser.c (cp_parser_check_class_key): Check class_key earlier. * g++.dg/warn/Wmismatched-tags-2.C: New test.
Marek Polacek committed -
The expression representing the array returned by SHAPE does not have its shape defined. An ICE occurs when FINDLOC attempts to use the shape of the array. Add shape to expression before returning from SHAPE. Whitespace issues identified by Steven G. Kargl <kargl@gcc.gnu.org> have also been fixed. gcc/fortran/ChangeLog PR fortran/93835 * simplify.c (simplify_findloc_nodim) : Fix whitespace issues. (gfc_simplify_shape) : Create and initialise one shape value for the result expression. Set shape value with the rank of the source array. gcc/testsuite/ChangeLog PR fortran/93835 * gfortran.dg/pr77351.f90 : Check for one error instead of two. * gfortran.dg/pr93835.f08 : New test.
Mark Eggleston committed -
My P0388R4 patch changed build_array_conv to create an identity conversion at the start of the conversion chain and now we crash in convert_like_real: 7457 case ck_identity: 7458 if (BRACE_ENCLOSED_INITIALIZER_P (expr)) 7459 { 7460 int nelts = CONSTRUCTOR_NELTS (expr); 7461 if (nelts == 0) 7462 expr = build_value_init (totype, complain); 7463 else if (nelts == 1) 7464 expr = CONSTRUCTOR_ELT (expr, 0)->value; 7465 else 7466 gcc_unreachable (); // HERE 7467 } in a test like this int f (int const (&)[2]) { return f({1, "M"}); } Instead of creating a ck_identity at the start of the conversion chain, so that conv_get_original_expr can be used with a ck_aggr, let's set u.expr for a ck_aggr, and adjust next_conversion not to try to see what's next in the chain if it gets a ck_aggr. 2020-02-24 Marek Polacek <polacek@redhat.com> PR c++/93712 - ICE with ill-formed array list-initialization. * call.c (next_conversion): Return NULL for ck_aggr. (build_aggr_conv): Set u.expr instead of u.next. (build_array_conv): Likewise. (build_complex_conv): Likewise. (conv_get_original_expr): Handle ck_aggr. * g++.dg/cpp0x/initlist-array11.C: New test.Marek Polacek committed -
This adds some missing pieces of the Ranges TS that make back_insert_iterator and front_insert_iterator conform to the new output_iterator requirements. It also fixes a bug in ranges::__copy_or_move and ranges::__copy_or_move_backward in which we were inspecting the iter_value_t of the output iterator, but output iterators such as back_insert_iterator and front_insert_iterator whose value_type = void do not have an iter_value_t according to [readable.traits] p4. The entire __use_memmove condition should probably be rewritten, but the simplest fix for now is to inspect the iterator_traits of the output iterator instead. libstdc++-v3/ChangeLog: PR libstdc++/93884 * include/bits/ranges_algobase.h (__copy_or_move, __copy_or_move_backward): Don't inspect the iter_value_t of the output iterator, instead inspect its iterator_traits directly. * include/bits/stl_iterator.h (back_insert_iterator::container): Conditionally initialize. (back_insert_iterator::difference_type): Conditionally define. (back_insert_iterator::back_insert_iterator): Conditionally define this default constructor. (front_insert_iterator::container): Conditionally initialize. (front_insert_iterator::difference_type): Conditionally define. (front_insert_iterator::front_insert_iterator): Conditionally define this default constructor. * 24_iterators/back_insert_iterator/pr93884.cc: New test. * 24_iterators/front_insert_iterator/pr93884.cc: New test.
Patrick Palka committed -
This patch adds std::shift_left and std::shift_right as per P0769R2. Alhough these are STL-style algos, this patch places them in <bits/ranges_algo.h> because they make use of some functions in the ranges namespace that are more easily reachable from <bits/ranges_algo.h> than from <bits/stl_algo.h>, namely ranges::next. In order to place these algos in <bits/stl_algo.h>, we would need to include <bits/range_access.h> from <bits/stl_algo.h> which would undesirably increase the size of <bits/stl_algo.h>. libstdc++-v3/ChangeLog: P0769R2 Add shift to <algorithm> * include/bits/ranges_algo.h (shift_left, shift_right): New. * testsuite/25_algorithms/shift_left/1.cc: New test. * testsuite/25_algorithms/shift_right/1.cc: New test.
Patrick Palka committed -
Patch from Svante Signell. Fixes GCC PR go/93900 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/220589
Ian Lance Taylor committed -
Using a BOZ constant in a structure constructor in a data statement resulted in an ICE. Output a "BOZ literal constant cannot appear in a structure constructor" error message instead. Original patch provided by Steven G. Kargl <kargl@gcc.gnu.org>. Test case added later. gcc/fortran/ChangeLog PR fortran/93604 * decl.c (gfc_match_data) : Check whether the data expression is a derived type and is a constructor. If a BOZ constant is encountered in the constructor output an error and return MATCH_ERROR. gcc/testsuite/ChangeLog PR fortran/93604 * gfortran.dg/pr93604.f90 : New test.
Mark Eggleston committed -
The following patch implements my understanding of P1937R2, though I wonder if https://eel.is/c++draft/expr.const#14.example-1 shouldn't have been also either removed or adjusted by the P1937R2 paper. 2020-02-24 Jakub Jelinek <jakub@redhat.com> P1937R2 - Fixing inconsistencies between const{expr,eval} functions * call.c (build_over_call): Don't evaluate immediate functions in unevaluated operands. * g++.dg/ext/consteval1.C: Change dg-{message,error} into dg-bogus. * g++.dg/cpp2a/consteval6.C: Likewise. * g++.dg/cpp2a/consteval3.C: Change dg-error for unevaluated operands into dg-bogus.
Jakub Jelinek committed -
Somehow I missed that the _M_value member can throw on construction. * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)): Make noexcept-specifier conditional. * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: Check noexcept-specifier.
Jonathan Wakely committed -
The grammar for variadic init-capture was fixed at the Prague C++ meeting where we finalized C++20. gcc/cp/ChangeLog 2020-02-24 Jason Merrill <jason@redhat.com> P0780R2: Resolve lambda init-capture pack grammar. * parser.c (cp_parser_lambda_introducer): Expect &...x=y rather than ...&x=y.
Jason Merrill committed -
Missing pieces of P0896R4 "The One Ranges Proposal" for C++20. * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)): Add constructor. (operator==(istream_iterator, default_sentinel_t)): Add operator. (ostream_iterator::difference_type): Define to ptrdiff_t for C++20. * include/bits/streambuf_iterator.h (istreambuf_iterator(default_sentinel_t)): Add constructor. (operator==(istreambuf_iterator, default_sentinel_t)): Add operator. * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: New test. * testsuite/24_iterators/istream_iterator/sentinel.cc: New test. * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc: New test. * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
Jonathan Wakely committed -
Skip the test if arm7a is not supported at link time. This is the case if the toolchain targets an M-profile CPU by default and does not have A-profile multilib: the link step fails because it tries to mix M-profile startup files with A-profile testcase. 2020-02-24 Christophe Lyon <christophe.lyon@linaro.org> PR lto/78353 * gcc.target/arm/pr78353-1.c: Add arm_arch_v7a_multilib effective target. * gcc.target/arm/pr78353-2.c: Likewise.
Christophe Lyon committed -
* include/std/ranges (__deep_const_range, __enable_view_impl): Remove. (ranges::enable_view): Simplify (LWG 3326). * include/bits/range_access.h (ranges::enable_view): Declare. * include/bits/regex.h (__enable_view_impl): Remove partial specialization. * include/bits/stl_multiset.h (__enable_view_impl): Likewise. * include/bits/stl_set.h (__enable_view_impl): Likewise. * include/bits/unordered_set.h (__enable_view_impl): Likewise. * include/debug/multiset.h (__enable_view_impl): Likewise. * include/debug/set.h (__enable_view_impl): Likewise. * include/debug/unordered_set (__enable_view_impl): Likewise. * include/experimental/string_view (ranges::enable_view): Define partial specialization. * include/std/span (ranges::enable_view): Likewise. * include/std/string_view (ranges::enable_view): Likewise. * testsuite/std/ranges/view.cc: Check satisfaction of updated concept.
Jonathan Wakely committed -
The following patch adds support for bitfields to push_partial_def. Previously pd.offset and pd.size were counted in bytes and maxsizei in bits, now everything is counted in bits. Not really sure how much of the further code can be outlined and moved, e.g. the full def and partial def code doesn't have pretty much anything in common (the partial defs case basically have some load bit range and a set of store bit ranges that at least partially overlap and we need to handle all the different cases, like negative pd.offset or non-negative, little vs. bit endian, size so small that we need to preserve original bits on both sides of the byte, size that fits or is too large. Perhaps the storing of some value into a middle of existing buffer (i.e. what push_partial_def now does in the loop) could, but the candidate for sharing would be most likely store-merging rather than the other spots in sccvn, and I think it is better not to touch store-merging at this stage. Yes, I've thought about trying to do everything in place, but the code is quite hard to understand and get right already now and if we tried to do the optimize on the fly, it would need more special cases and would for gcov coverage need more testcases to cover it. Most of the time the sizes will be small. Furthermore, for bitfields native_encode_expr stores actually number of bytes in the mode and not say actual bitsize rounded up to bytes, so it wouldn't be just a matter of saving/restoring bytes at the start and end, but we might need even 7 further bytes e.g. for __int128 bitfields. Perhaps we could have just a fast path for the case where everything is byte aligned and (for integral types the mode bitsize is equal to the size too)? 2020-02-24 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/93582 * tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Consider pd.offset and pd.size to be counted in bits rather than bytes, add support for maxsizei that is not a multiple of BITS_PER_UNIT and handle bitfield stores and loads. (vn_reference_lookup_3): Don't call ranges_known_overlap_p with uncomparable quantities - bytes vs. bits. Allow push_partial_def on offsets/sizes that aren't multiple of BITS_PER_UNIT and adjust pd.offset/pd.size to be counted in bits rather than bytes. Formatting fix. Rename shadowed len variable to buflen. * gcc.dg/tree-ssa/pr93582-4.c: New test. * gcc.dg/tree-ssa/pr93582-5.c: New test. * gcc.dg/tree-ssa/pr93582-6.c: New test. * gcc.dg/tree-ssa/pr93582-7.c: New test. * gcc.dg/tree-ssa/pr93582-8.c: New test.
Jakub Jelinek committed -
PR fortran/93552 * match.c (match_exit_cycle): With OpenACC, check the kernels loop directive and tile clause as well. PR fortran/93552 * gfortran.dg/goacc/tile-4.f90: New.Tobias Burnus committed -
2020-02-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> Kugan Vivekandarajah <kugan.vivekanandarajah@linaro.org> PR driver/47785 * gcc.c (putenv_COLLECT_AS_OPTIONS): New function. (driver::main): Call putenv_COLLECT_AS_OPTIONS. * opts-common.c (parse_options_from_collect_gcc_options): New function. (prepend_xassembler_to_collect_as_options): Likewise. * opts.h (parse_options_from_collect_gcc_options): Declare prototype. (prepend_xassembler_to_collect_as_options): Likewise. * lto-opts.c (lto_write_options): Stream assembler options in COLLECT_AS_OPTIONS. * lto-wrapper.c (xassembler_options_error): New static variable. (get_options_from_collect_gcc_options): Move parsing options code to parse_options_from_collect_gcc_options and call it. (merge_and_complain): Validate -Xassembler options. (append_compiler_options): Handle OPT_Xassembler. (run_gcc): Append command line -Xassembler options to collect_gcc_options. * doc/invoke.texi: Add documentation about using Xassembler options with LTO. testsuite/ * gcc.target/arm/pr78353-1.c: New test. * gcc.target/arm/pr78353-2.c: Likewise.
Prathamesh Kulkarni committed -
- Using gcc.dg/torture/pr91323.c as testcase, so no new testcase introduced. - We use 3 eq compare for LTGT compare before, in order to prevent exception flags setting when any input is NaN. - According latest GCC document LTGT and discussion on pr91323 LTGT should signals on NaNs, like GE/GT/LE/LT. - So we expand (LTGT a b) to ((LT a b) | (GT a b)) for fit the document. - Tested rv64gc/rv32gc bare-metal/linux on qemu and rv64gc on HiFive unleashed board with linux. ChangeLog gcc/ Kito Cheng <kito.cheng@sifive.com> * config/riscv/riscv.c (riscv_emit_float_compare): Change the code gen for LTGT. (riscv_rtx_costs): Update cost model for LTGT.
Kito Cheng committed -
GCC Administrator committed
-
- 23 Feb, 2020 5 commits
-
-
2020-02-23 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/93564 * ira-color.c (struct update_cost_queue_elem): New member start. (queue_update_cost, get_next_update_cost): Add new arg start. (allocnos_conflict_p): New function. (update_costs_from_allocno): Add new arg conflict_cost_update_p. Add checking conflicts with allocnos_conflict_p. (update_costs_from_prefs, restore_costs_from_copies): Adjust update_costs_from_allocno calls. (update_conflict_hard_regno_costs): Add checking conflicts with allocnos_conflict_p. Adjust calls of queue_update_cost and get_next_update_cost. (assign_hard_reg): Adjust calls of queue_update_cost. Add debugging print. (bucket_allocno_compare_func): Restore previous version.
Vladimir N. Makarov committed -
2020-02-23 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/93889 * interface.c (compare_parameter): Fix error message.
Thomas König committed -
2020-02-23 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/93890 * interface.c: Replace "can not" by "cannot" and remove trailing space. 2020-02-23 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/93890 * gfortran.dg/argument_checking_24.f90: Correct test case.
Thomas König committed -
Paul Thomas committed
-
GCC Administrator committed
-
- 22 Feb, 2020 4 commits
-
-
2020-02-22 Jakub Jelinek <jakub@redhat.com> PR other/55930 * Makefile.am (M_DEPS): Guard the empty definition with @AMDEP_FALSE@ rather than @AMDEP_TRUE@. * Makefile.in: Regenerated.
Jakub Jelinek committed -
A tweak for translators, as requested in the PR. 2020-02-22 Marek Polacek <polacek@redhat.com> PR c++/93882 * decl.c (grokdeclarator): Use %qs in a diagnostic message.
Marek Polacek committed -
PR other/55930 * Makefile.am (M_DEPS): Honor -disable-dependency-tracking. * Makefile.in: Regenerated.
Richarde Purdie committed -
GCC Administrator committed
-
- 21 Feb, 2020 7 commits
-
-
2020-02-21 John David Anglin <danglin@gcc.gnu.org> * gcc/config/pa/pa.c (pa_function_value): Fix check for word and double-word size when handling aggregate return values. * gcc/config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Fix to indicate that homogeneous SFmode and DFmode aggregates are passed and returned in general registers.
John David Anglin committed -
The first two hunks make sure we actually translate what has been marked for translation, i.e. the cl_options[...].help strings, rather than those strings ammended in various ways, like: _("%s Same as %s."), help, ... or "%s %s", help, _(use_diagnosed_msg) The exgettext changes attempt to make sure that the cl_options[...].help strings are marked as no-c-format, because otherwise if they happen to contain a % character, such as the 90% substring, they will be marked as c-format, which they aren't. 2020-02-21 Jakub Jelinek <jakub@redhat.com> PR translation/93759 * opts.c (print_filtered_help): Translate help before appending messages to it rather than after that. * exgettext: For *.opt help texts, use __opt_help_text("...") rather than _("...") in the $emsg file and pass options that say that this implies no-c-format.Jakub Jelinek committed -
This PR is about a case in which the clobbers at the start of an EH receiver can lead to registers becoming unnecessarily live in predecessor blocks. My first attempt at fixing this made sure that we update the bb liveness info based on the real live set: http://gcc.gnu.org/g:e648e57efca6ce6d751ef8c2038608817b514fb4 But it turns out that the clobbered registers were also added to the "gen" set of LRA's private liveness problem, where "gen" in this context means "generates a requirement for a live value". So the clobbered registers could still end up live via that mechanism instead. This patch therefore reverts the patch above and takes the other approach floated in the original patch description: model the full clobber by making the registers live and then dead again. There's no specific need to revert the original patch, since the code should no longer be sensitive to the order of the bb liveness update and the modelling of the clobber. But given that there's no specific need to keep the original patch either, it seemed better to restore the code to the more well-tested order. Tested on aarch64-linux-gnu and x86_64-linux-gnu. OK to install? Richard 2020-02-19 Richard Sandiford <richard.sandiford@arm.com> gcc/ PR rtl-optimization/PR92989 * lra-lives.c (process_bb_lives): Restore the original order of the bb liveness update. Call make_hard_regno_dead for each register clobbered at the start of an EH receiver.
Richard Sandiford committed -
PR ipa/93763 * ipa-cp.c (self_recursively_generated_p): Mark self-dependent value as self-recursively generated.Jeff Law committed -
PR ipa/93763 * ipa-cp.c (self_recursively_generated_p): Mark self-dependent value as self-recursively generated.Feng Xue committed -
The quotes should surround all of the literal content from the pragma that has incorrect usage. 2020-02-21 Iain Sandoe <iain@sandoe.co.uk> PR target/93860 * config/darwin-c.c (pop_field_alignment): Adjust quoting of error string.
Iain Sandoe committed -
PR c++/93753 - ICE on a flexible array followed by a member in an anonymous struct with an initializer gcc/cp/ChangeLog: PR gcov-profile/93753 * class.c (check_flexarrays): Tighten up a test for potential members of anonymous structs or unions. gcc/testsuite/ChangeLog: PR gcov-profile/93753 * g++.dg/ext/flexary36.C: New test. * g++.dg/lto/pr93166_0.C: Make struct with flexarray valid.
Martin Sebor committed
-