180504 Commits

Author SHA1 Message Date
Gary Dismukes
5c6430d68c [Ada] Missing errors on extension aggregates with unknown discriminants
gcc/ada/

	* sem_aggr.adb (Resolve_Extension_Aggregate): When testing for
	an aggregate that is illegal due to having an ancestor type that
	has unknown discriminants, add an "or else" condition testing
	whether the aggregate type has unknown discriminants and that
	Partial_View_Has_Unknown_Discr is also set on the ancestor type.
	Extend the comment, including adding ??? about a possible
	simpler test.
2020-10-26 04:58:58 -04:00
Bob Duff
cc744c0c23 [Ada] Delete: set Position to No_Element
gcc/ada/

	* libgnat/a-cihama.adb, libgnat/a-cohama.adb,
	libgnat/a-cohase.adb (Delete): Set Position.Position, and
	assert.
2020-10-26 04:58:57 -04:00
Arnaud Charlet
1ab538527f [Ada] Improve error on missing with clause
gcc/ada/

	* sem_ch8.adb (Find_Direct_Name.Undefined): Handle known unit
	names with 3 selectors.
2020-10-26 04:58:56 -04:00
Piotr Trojanek
8cb66f9609 [Ada] Fix SPARK expansion of iterated_component_assoc in delta aggregate
gcc/ada/

	* exp_spark.adb (Expand_SPARK_Delta_Or_Update): Add missing call
	to Enter_Name, just like it is called for
	iterated_component_association in Expand_SPARK_N_Aggregate.
2020-10-26 04:58:55 -04:00
Piotr Trojanek
9fdbcec694 [Ada] Cleanup SPARK expansion of aggregates with iterated_component_assoc
gcc/ada/

	* exp_spark.adb (Expand_SPARK_Delta_Or_Update): Reuse local
	constant Expr and the Choice_List routine.
	(Expand_SPARK_N_Aggregate): Reuse local constant Expr.
2020-10-26 04:58:54 -04:00
Piotr Trojanek
acdd1bd4c6 [Ada] Fix typos in comments about parsing iterated_component_association
gcc/ada/

	* par-ch4.adb (P_Iterated_Component_Association): Fix typos in
	comments.
2020-10-26 04:58:54 -04:00
Arnaud Charlet
e3710c6509 [Ada] AI12-0395: Allow aspect_specifications on formal parameters
gcc/ada/

	* par-ch6.adb (P_Formal_Part): Ada 2020 supports scanning
	aspects on formal parameters.
	* doc/gnat_rm/implementation_defined_aspects.rst (Aspect
	Unreferenced): Update documentation.
	* gnat_rm.texi: Regenerate.
2020-10-26 04:58:53 -04:00
Ed Schonberg
e8d6d5f039 [Ada] Crash on membership test in expression function
gcc/ada/

	* freeze.adb (Freeze_Type_Refs): When an entity in an expression
	function is a type, freeze the entity and not just its type,
	which would be incomplete when the type is derived and/or
	tagged.
2020-10-26 04:58:52 -04:00
Piotr Trojanek
3b01ce303b [Ada] Handle subtype_indication in 'Update for arrays
gcc/ada/

	* exp_attr.adb (Expand_Update_Attribute): Handle
	subtype_indication just like in Expand_Delta_Array_Aggregate.
2020-10-26 04:58:51 -04:00
Xionghu Luo
a7d153ab84 Add overloaded debug_bb and debug_bb_n with dump flags
Add overloads that accept a flags argument so we can print
debug_bb_n (5, TDF_DETAILS) in gdb, also the debug_bb_slim
variant would then be just a forwarder.

gcc/ChangeLog:

2020-10-26  Xionghu Luo  <luoxhu@linux.ibm.com>

	* cfg.c (debug_bb): New overloaded function.
	(debug_bb_n): New overloaded function.
	* cfg.h (debug_bb): New declaration.
	(debug_bb_n): New declaration.
	* print-rtl.c (debug_bb_slim): Call debug_bb with flags.
2020-10-26 02:52:39 -05:00
GCC Administrator
9651cba436 Daily bump. 2020-10-26 00:16:21 +00:00
Iain Sandoe
308e40331f Ada, Darwin, PowerPC : Fix bootstrap after 128 int changes.
The GNATRTL_128BIT_PAIRS/OBJS need to be added for 64bit
multilibs on powerpc-darwin, and for powerpc64-darwin.

gcc/ada/ChangeLog:

	* Makefile.rtl: Add GNATRTL_128BIT_PAIRS/OBJS for 64bit
	PowerPC Darwin cases.
2020-10-25 19:20:42 +00:00
Thomas Koenig
47d13acbda Correct decls for functions which do not pass actual arguments.
A wrong decl for findloc caused segfaults at runtime on
Darwin for ARM; however, this is only a symptom of a larger
disease: The declarations for our library functions are often
inconsistent.  This patch solves that problem for the functions
specifically for the functions for which we do not pass optional
arguments, i.e. findloc and (min|max)loc.

It works by saving the symbols of the specific functions in
gfc_intrinsic_namespace and by generating the formal argument
lists from the actual argument lists.  Because symbols are
re-used, so are the backend decls.

gcc/fortran/ChangeLog:

	PR fortran/97454
	* gfortran.h (gfc_symbol): Add pass_as_value flag.
	(gfc_copy_formal_args_intr): Add optional argument
	copy_type.
	(gfc_get_intrinsic_function_symbol): Add prototype.
	(gfc_find_intrinsic_symbol): Add prototype.
	* intrinsic.c (gfc_get_intrinsic_function_symbol): New function.
	(gfc_find_intrinsic_symbol): New function.
	* symbol.c (gfc_copy_formal_args_intr): Add argument. Handle case
	where the type needs to be copied from the actual argument.
	* trans-intrinsic.c (remove_empty_actual_arguments): New function.
	(specific_intrinsic_symbol): New function.
	(gfc_conv_intrinsic_funcall): Use it.
	(strip_kind_from_actual): Adjust so that the expression pointer
	is set to NULL.
	(gfc_conv_intrinsic_minmaxloc): Likewise.
	(gfc_conv_intrinsic_minmaxval): Adjust removal of dim.
	* trans-types.c (gfc_sym_type): If sym->pass_as_value is set, do
	not pass by reference.
2020-10-25 13:17:06 +01:00
GCC Administrator
d7ddd287ca Daily bump. 2020-10-25 00:16:26 +00:00
H.J. Lu
1aeb7d7d67 Update check for working assembler --gdwarf-4 option
Rename HAVE_AS_WORKING_DWARF_4_FLAG to HAVE_AS_WORKING_DWARF_N_FLAG
Don't set HAVE_AS_WORKING_DWARF_N_FLAG if --gdwarf-5/--gdwarf-4 generate
an extra assembly input file in debug info from compiler generated
.debug_line or fail with the APP marker:

https://sourceware.org/bugzilla/show_bug.cgi?id=25878
https://sourceware.org/bugzilla/show_bug.cgi?id=26740
https://sourceware.org/bugzilla/show_bug.cgi?id=26778

Also replace success with dwarf4_success in the 32-bit --gdwarf-4 check.

	PR bootstrap/97451
	* configure.ac (HAVE_AS_WORKING_DWARF_4_FLAG): Renamed to ...
	(HAVE_AS_WORKING_DWARF_N_FLAG): This.  Don't define if there is
	an extra assembly input file in debug info.  Replace success
	with dwarf4_success in the 32-bit --gdwarf-4 check.
	* dwarf2out.c (asm_outputs_debug_line_str): Check
	HAVE_AS_WORKING_DWARF_N_FLAG instead of
	HAVE_AS_WORKING_DWARF_4_FLAG.
	* gcc.c (ASM_DEBUG_SPEC): Likewise.
	(ASM_DEBUG_OPTION_SPEC): Likewise.
	* config.in: Regenerated.
	* configure: Likewise.
2020-10-24 09:03:36 -07:00
Marek Polacek
0df73beea0 c++: Fix verify_ctor_sanity ICE [PR96241]
The code added in r10-6437 caused us to create a CONSTRUCTOR when we're
{}-initializing an aggregate.  Then we pass this new CONSTRUCTOR down to
cxx_eval_constant_expression which, if the CONSTRUCTOR isn't TREE_CONSTANT
or reduced_constant_expression_p, calls cxx_eval_bare_aggregate.  In
this case the CONSTRUCTOR wasn't reduced_constant_expression_p because
for r_c_e_p a CONST_DECL isn't good enough so it returns false.  So we
go to cxx_eval_bare_aggregate where we crash, because ctx->ctor wasn't
set up properly.  So my fix is to do so.  Since we're value-initializing,
I'm not setting CONSTRUCTOR_NO_CLEARING.  To avoid keeping a garbage
constructor around, I call free_constructor in case the evaluation did
not use it.

gcc/cp/ChangeLog:

	PR c++/96241
	* constexpr.c (cxx_eval_array_reference): Set up ctx->ctor if we
	are initializing an aggregate.  Call free_constructor on the new
	CONSTRUCTOR if it isn't returned from cxx_eval_constant_expression.

gcc/testsuite/ChangeLog:

	PR c++/96241
	* g++.dg/cpp0x/constexpr-96241.C: New test.
	* g++.dg/cpp1y/constexpr-96241.C: New test.
2020-10-24 10:50:45 -04:00
Aldy Hernandez
16e2427f50 Handle undefined ranges in get_size_range.
An undefined range was leaking through to the end of this function,
which leads us to use an uninitialized wide_int.

gcc/ChangeLog:

	PR tree-optimization/97538
	* calls.c (get_size_range): Handle undefined ranges.

gcc/testsuite/ChangeLog:

	* g++.dg/pr97538.C: New test.
2020-10-24 10:38:33 +02:00
Martin Liska
a29ff9c53a cgraph: move former_thunk_p out of CHECKING_P macro.
This fixes the following failure:

ld: cgraph.o: in function `cgraph_edge::verify_corresponds_to_fndecl(tree_node*)':
gcc/cgraph.c:3067: undefined reference to `cgraph_node::former_thunk_p()'
ld: cgraph.o: in function `clone_of_p':

gcc/ChangeLog:

	* cgraph.c (cgraph_node::former_thunk_p): Move out of CHECKING_P
	macro.
2020-10-24 08:42:33 +02:00
Alan Modra
d0e2ffcca0 [RS6000] altivec style lvx/stvx addresses vs power10
gcc.target/powerpc/fold-vec-st-pixel.c and other testcases fail on
power10, generating
	addi 9,5,12
	rldicr 9,9,0,59
	stxv 34,0(9)
rather than
	addi 5,5,12
	stvx 2,0,5
for an altivec lvx/stvx style address.

The problem starts with fwprop creating
(insn 9 4 0 2 (set (mem:V8HI (and:DI (plus:DI (reg/v/f:DI 121 [ vpp ])
                    (const_int 12 [0xc]))
                (const_int -16 [0xfffffffffffffff0])) [0 MEM <vector(8) short int> [(void *)_4 & -16B]+0 S16 A128])
        (reg/v:V8HI 120 [ vp1 ])) "pixel.c":6:10 1237 {vsx_movv8hi_64bit}
which is finally thrown out as invalid by lra.  lra of course does that
by reloading the entire address.

fwprop creates the invalid address due to rs6000_legitimate_address_p
trimming off the outer AND of altivec style addresses before applying
other predicates.  address_is_prefixed then allows the inner address.

Now at the time the AND stripping was added (git commit 850e8d3d56d),
rs6000_legitimate_address looked a lot simpler.  This patch allows
through just those addresses that were legitimate in those simpler
days.

	* config/rs6000/rs6000.c (rs6000_legitimate_address_p): Limit
	AND addressing to just lvx/stvx style addresses.
2020-10-24 14:28:19 +10:30
Alan Modra
1a21c0ecd9 [RS6000] Power10 ICE running gcc.target/powerpc/ppc-ne0-1.c
* config/rs6000/rs6000.md (cstore<mode>4): Don't call
	rs6000_emit_int_cmove for power10 when -mno-isel.
2020-10-24 14:26:11 +10:30
GCC Administrator
efe71fcc4c Daily bump. 2020-10-24 00:16:29 +00:00
Nikhil Benesch
27f7ab27d1 net/http/cgi: merge upstream changes to default env vars
Incorporate upstream modifications to the cgi package's set of rules
about which environment variables should be inherited by child processes
by default on each platform. In particular this permits tests to pass on
NetBSD by preserving the value of the LD_LIBRARY_PATH environment
variable.

This is a partial backport of the following upstream CLs:

    https://golang.org/cl/263802
    https://golang.org/cl/263577
    https://golang.org/cl/254740

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/264097
2020-10-23 16:55:57 -07:00
Marek Polacek
d835608f05 testsuite: Fix -Wsizeof-array-div tests.
gcc/testsuite/ChangeLog:

	* c-c++-common/Wsizeof-array-div1.c: Expect certain warnings on
	lp64 targets only.
	* g++.dg/warn/Wsizeof-array-div2.C: Only run on lp64 targets.
2020-10-23 19:27:07 -04:00
Jan Hubicka
67f3791f7d Move thunks out of cgraph_node
this patch moves thunk_info out of cgraph_node into a symbol summary.
I also moved it to separate hearder file since cgraph.h became really too
fat.  I plan to contiue with similar breakup in order to cleanup interfaces
and reduce WPA memory footprint (symbol table now consumes more memory than
trees)

gcc/ChangeLog:

2020-10-23  Jan Hubicka  <hubicka@ucw.cz>

	* Makefile.in: Add symtab-thunks.o
	(GTFILES): Add symtab-thunks.h and symtab-thunks.cc; remove cgraphunit.c
	* cgraph.c: Include symtab-thunks.h.
	(cgraph_node::create_thunk): Update
	(symbol_table::create_edge): Update
	(cgraph_node::dump): Update
	(cgraph_node::call_for_symbol_thunks_and_aliases): Update
	(set_nothrow_flag_1): Update
	(set_malloc_flag_1): Update
	(set_const_flag_1): Update
	(collect_callers_of_node_1): Update
	(clone_of_p): Update
	(cgraph_node::verify_node): Update
	(cgraph_node::function_symbol): Update
	(cgraph_c_finalize): Call thunk_info::release.
	(cgraph_node::has_thunk_p): Update
	(cgraph_node::former_thunk_p): Move here from cgraph.h; reimplement.
	* cgraph.h (struct cgraph_thunk_info): Rename to symtab-thunks.h.
	(cgraph_node): Remove thunk field; add thunk bitfield.
	(cgraph_node::expand_thunk): Move to symtab-thunks.h
	(symtab_thunks_cc_finalize): Declare.
	(cgraph_node::has_gimple_body_p): Update.
	(cgraph_node::former_thunk_p): Update.
	* cgraphclones.c: Include symtab-thunks.h.
	(duplicate_thunk_for_node): Update.
	(cgraph_edge::redirect_callee_duplicating_thunks): Update.
	(cgraph_node::expand_all_artificial_thunks): Update.
	(cgraph_node::create_edge_including_clones): Update.
	* cgraphunit.c: Include symtab-thunks.h.
	(vtable_entry_type): Move to symtab-thunks.c.
	(cgraph_node::analyze): Update.
	(analyze_functions): Update.
	(mark_functions_to_output): Update.
	(thunk_adjust): Move to symtab-thunks.c
	(cgraph_node::expand_thunk): Move to symtab-thunks.c
	(cgraph_node::assemble_thunks_and_aliases): Update.
	(output_in_order): Update.
	(cgraphunit_c_finalize): Do not clear vtable_entry_type.
	(cgraph_node::create_wrapper): Update.
	* gengtype.c (open_base_files): Add symtab-thunks.h
	* ipa-comdats.c (propagate_comdat_group): UPdate.
	(ipa_comdats): Update.
	* ipa-cp.c (determine_versionability): UPdate.
	(gather_caller_stats): Update.
	(count_callers): Update
	(set_single_call_flag): Update
	(initialize_node_lattices): Update
	(call_passes_through_thunk_p): Update
	(call_passes_through_thunk): Update
	(propagate_constants_across_call): Update
	(find_more_scalar_values_for_callers_subset): Update
	(has_undead_caller_from_outside_scc_p): Update
	* ipa-fnsummary.c (evaluate_properties_for_edge): Update.
	(compute_fn_summary): Update.
	(inline_analyze_function): Update.
	* ipa-icf.c: Include symtab-thunks.h.
	(sem_function::equals_wpa): Update.
	(redirect_all_callers): Update.
	(sem_function::init): Update.
	(sem_function::parse): Update.
	* ipa-inline-transform.c: Include symtab-thunks.h.
	(inline_call): Update.
	(save_inline_function_body): Update.
	(preserve_function_body_p): Update.
	* ipa-inline.c (inline_small_functions): Update.
	* ipa-polymorphic-call.c: Include alloc-pool.h, symbol-summary.h,
	symtab-thunks.h
	(ipa_polymorphic_call_context::ipa_polymorphic_call_context): Update.
	* ipa-pure-const.c: Include symtab-thunks.h.
	(analyze_function): Update.
	* ipa-sra.c (check_for_caller_issues): Update.
	* ipa-utils.c (ipa_reverse_postorder): Update.
	(ipa_merge_profiles): Update.
	* ipa-visibility.c (non_local_p): Update.
	(cgraph_node::local_p): Update.
	(function_and_variable_visibility): Update.
	* ipa.c (symbol_table::remove_unreachable_nodes): Update.
	* lto-cgraph.c: Include alloc-pool.h, symbol-summary.h and
	symtab-thunks.h
	(lto_output_edge): Update.
	(lto_output_node): Update.
	(compute_ltrans_boundary): Update.
	(output_symtab): Update.
	(verify_node_partition): Update.
	(input_overwrite_node): Update.
	(input_node): Update.
	* lto-streamer-in.c (fixup_call_stmt_edges): Update.
	* symtab-thunks.cc: New file.
	* symtab-thunks.h: New file.
	* toplev.c (toplev::finalize): Call symtab_thunks_cc_finalize.
	* trans-mem.c (ipa_tm_mayenterirr_function): Update.
	(ipa_tm_execute): Update.
	* tree-inline.c (expand_call_inline): Update.
	* tree-nested.c (create_nesting_tree): Update.
	(convert_all_function_calls): Update.
	(gimplify_all_functions): Update.
	* tree-profile.c (tree_profiling): Update.
	* tree-ssa-structalias.c (associate_varinfo_to_alias): Update.
	* tree.c (free_lang_data_in_decl): Update.
	* value-prof.c (init_node_map): Update.

gcc/c-family/ChangeLog:

2020-10-23  Jan Hubicka  <hubicka@ucw.cz>

	* c-common.c (c_common_finalize_early_debug): Update for new thunk api.

gcc/d/ChangeLog:

2020-10-23  Jan Hubicka  <hubicka@ucw.cz>

	* decl.cc (finish_thunk): Update for new thunk api.

gcc/lto/ChangeLog:

2020-10-23  Jan Hubicka  <hubicka@ucw.cz>

	* lto-partition.c (add_symbol_to_partition_1): Update for new thunk
	api.
2020-10-23 21:44:23 +02:00
Marek Polacek
83f83ddfe0 c, c++: Implement -Wsizeof-array-div [PR91741]
This patch implements a new warning, -Wsizeof-array-div.  It warns about
code like

  int arr[10];
  sizeof (arr) / sizeof (short);

where we have a division of two sizeof expressions, where the first
argument is an array, and the second sizeof does not equal the size
of the array element.  See e.g. <https://www.viva64.com/en/examples/v706/>.

Clang makes it possible to suppress the warning by parenthesizing the
second sizeof like this:

  sizeof (arr) / (sizeof (short));

so I followed suit.  In the C++ FE this was rather easy, because
finish_parenthesized_expr already set TREE_NO_WARNING.  In the C FE
I've added a new tree code, PAREN_SIZEOF_EXPR, to discern between the
non-() and () versions.

This warning is enabled by -Wall.  An example of the output:

x.c:5:23: warning: expression does not compute the number of elements in this array; element type is ‘int’, not ‘short int’ [-Wsizeof-array-div]
    5 |   return sizeof (arr) / sizeof (short);
      |          ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
x.c:5:25: note: add parentheses around ‘sizeof (short int)’ to silence this warning
    5 |   return sizeof (arr) / sizeof (short);
      |                         ^~~~~~~~~~~~~~
      |                         (             )
x.c:4:7: note: array ‘arr’ declared here
    4 |   int arr[10];
      |       ^~~

gcc/c-family/ChangeLog:

	PR c++/91741
	* c-common.c (verify_tree): Handle PAREN_SIZEOF_EXPR.
	(c_common_init_ts): Likewise.
	* c-common.def (PAREN_SIZEOF_EXPR): New tree code.
	* c-common.h (maybe_warn_sizeof_array_div): Declare.
	* c-warn.c (sizeof_pointer_memaccess_warning): Unwrap NOP_EXPRs.
	(maybe_warn_sizeof_array_div): New function.
	* c.opt (Wsizeof-array-div): New option.

gcc/c/ChangeLog:

	PR c++/91741
	* c-parser.c (c_parser_binary_expression): Implement -Wsizeof-array-div.
	(c_parser_postfix_expression): Set PAREN_SIZEOF_EXPR.
	(c_parser_expr_list): Handle PAREN_SIZEOF_EXPR like SIZEOF_EXPR.
	* c-tree.h (char_type_p): Declare.
	* c-typeck.c (char_type_p): No longer static.

gcc/cp/ChangeLog:

	PR c++/91741
	* typeck.c (cp_build_binary_op): Implement -Wsizeof-array-div.

gcc/ChangeLog:

	PR c++/91741
	* doc/invoke.texi: Document -Wsizeof-array-div.

gcc/testsuite/ChangeLog:

	PR c++/91741
	* c-c++-common/Wsizeof-pointer-div.c: Add dg-warning.
	* c-c++-common/Wsizeof-array-div1.c: New test.
	* g++.dg/warn/Wsizeof-array-div1.C: New test.
	* g++.dg/warn/Wsizeof-array-div2.C: New test.
2020-10-23 15:07:10 -04:00
Martin Sebor
757ba6653c PR middle-end/97552 - missing waning passing null to a VLA argument declared [static]
gcc/ChangeLog:

	PR middle-end/97552
	* attribs.c (init_attr_rdwr_indices): Handle static VLA parameters.

gcc/c/ChangeLog:

	PR middle-end/97552
	* c-decl.c (get_parm_array_spec): Handle static VLA parameters.

gcc/testsuite/ChangeLog:

	PR middle-end/97552
	* gcc.dg/Wvla-parameter-2.c: Adjust text of expected warning.
	* gcc.dg/Wnonnull-5.c: New test.
2020-10-23 12:37:38 -06:00
Martin Sebor
7991e96323 PR c/97463 - ICE in warn_parm_ptrarray_mismatch on an incompatible function redeclaration
gcc/c-family/ChangeLog:

	PR c/97463
	* c-warn.c (warn_parm_ptrarray_mismatch): Move null test earlier.

gcc/testsuite/ChangeLog:

	PR c/97463
	* gcc.dg/pr97463.c: New test.
2020-10-23 12:30:20 -06:00
Iain Sandoe
c7c4a2787b Darwin, Ada : Fix bootstrap after stat entry changes.
Darwin struct stat has timeval entry fields for file access and
modification times but they are named differently from those
on Linux.

As a workaround define the field names to the Darwin equivalent.

gcc/ada/ChangeLog:

	* adaint.c: On Darwin platforms, define st_atim to
	st_atimespec. Likwise st_mtim to st_mtimespec.
2020-10-23 19:16:37 +01:00
Eric Botcazou
0aa5a935b4 Fix typo in recent change to Makefile.rtl (bis)
gcc/ada/ChangeLog:
	* Makefile.rtl (EXTRA_GNATRTL_NONTASKING_OBJS) [IA64/Linux]: Fix typo.
2020-10-23 19:19:19 +02:00
Eric Botcazou
ef69ce004e Fix typo in recent change to Makefile.rtl
gcc/ada/ChangeLog:
	* Makefile.rtl (EXTRA_GNATRTL_NONTASKING_OBJS) [IA64/Linux]: Fix typo.
2020-10-23 18:18:14 +02:00
Douglas Rupp
cd8b7d7b24 Link with the configured net lib on vxworks7
The net library is configurable on vxworks7. Pick the library
to include in link closures in accordance with the availability
of a revealing header file, using the recently introduced
if-exist-then-else spec builtin function.

2021-10-23  Douglas Rupp  <rupp@adacore.com>

gcc/
	* config/vxworks.h (VXWORKS_NET_LIBS_RTP): Use -lrtnet if
	rtnetStackLib.h is available,fallback to -lnet otherwise.
2020-10-23 15:47:45 +00:00
David Edelsohn
e10440edda testsuite: Correct vec-rlmi-rlnm.c testsuite expected result
gcc/testsuite/ChangeLog:

	* gcc.target/powerpc/vec-rlmi-rlnm.c: Update xxlor expect.
2020-10-23 11:27:04 -04:00
Rasmus Villemoes
ad1a9afc60 Fix overzealous gthread support inhibition for vxworks
The tests for macros possibly defined in gthr.h needs to
be performed after the corresponding #include. This was tested
together with the previous updates to gthr-vxworks-thread.c
and gthr-vxworks-cond.c and was meant to be squashed with them.

2010-10-23  Rasmus Villemoes  <rv@rasmusvillemoes.dk>

libgcc/
	* config/gthr-vxworks-thread.c: #include gthr.h before
	testing the guard defined there.
	* config/gthr-vxworks-cond.c: Likewise.
2020-10-23 15:23:33 +00:00
Douglas Rupp
081dc85073 Add a if-exists-then-else built-in spec function
This patch adds an if-exists-then-else
builtin spec function, which tests for the existence of
a file and returns one or the other of the following
arguments depending on the result of the test.

This differs from the existing if-exists or
if-exists-else function which return the name of the
tested file if it exists.

This new function is of help to a forthcoming change for
VxWorks where we check for the presence of a specific header
file to decide the name of a library to include in the link
closure.

2020-10-23  Douglas Rupp  <rupp@adacore.com>

gcc/
	* gcc.c (if-exists-then-else): New built-in spec function.
	* doc/invoke.texi: Document it.
2020-10-23 15:21:38 +00:00
Tulio Magno Quites Machado Filho via Gcc-patches
940e68b9de rs6000: Fix extraneous characters in the documentation
Replace them with a whitespace in order to avoid artifacts in the HTML
document.

2020-08-19  Tulio Magno Quites Machado Filho  <tuliom@linux.ibm.com>

gcc/
	* doc/extend.texi (PowerPC Built-in Functions): Replace
	extraneous characters with whitespace.
2020-10-23 15:09:30 +00:00
Martin Liska
9067a15450 gcov: fix reading of zero sections.
I noticed that during coverage build of binutils.

gcc/ChangeLog:

	* gcov.c (read_count_file): Never call gcov_sync with a negative
	value.
2020-10-23 16:22:55 +02:00
Jonathan Wakely
b66b30a807 testsuite: Add noexcept(false) to throwing destructor
I think this test is intended to check this property of the C++
standard:

"If a destructor directly invoked by stack unwinding exits via an
exception, std::terminate is invoked." [except.throw]

Since C++11 any exception escaping a destructor will call
std::terminate, so the test would terminate even if the unwinding
behaviour was wrong.

Give the destructor a potentially-throwing exception specification,
so that we know that terminate was called for the right reason.

gcc/testsuite/ChangeLog:

	* g++.dg/compat/eh/filter2_y.C: Add noexcept(false) to
	destructor.
2020-10-23 15:03:38 +01:00
Patrick Palka
50106208ff libstdc++: Apply proposed resolutions for LWG 3428, 3447
libstdc++-v3/ChangeLog:

	* include/std/ranges (single_view::single_view): Mark the
	in place constructor explicit as per LWG 3428.
	(take_view): Remove the constraint on the deduction guide's
	template parameter as per LWG 3447.
2020-10-23 09:03:25 -04:00
Alexandre Oliva
9e3b9ddb99 more wraplf for aux long long float: s390, sparc and powerpc
The wraplf version of Ada.Numerics.Aux_Long_Long_Float is needed on
s390* as well.  Also add it to sparc*-linux-gnu and powerpc-darwin,
that were missed when adding it for sparc and ppc targets.


for  gcc/ada/ChangeLog

	PR ada/97504
	* Makefile.rtl (LIBGNAT_TARGET_PAIRS): Select wraplf version
	of Aux_Long_Long_Float for s390 and remaining sparc and
	powerpc targets.
2020-10-23 06:37:07 -03:00
Dmitriy Anisimkov
d08d481912 [Ada] Sockets.Poll implementation
gcc/ada/

	* Makefile.rtl (GNATRTL_SOCKETS_OBJS): New object
	g-socpol$(objext) New source files noted: g-socpol.adb,
	g-socpol.ads, g-socpol__dummy.adb, g-socpol__dummy.ads,
	g-sopowa.adb, g-sopowa__posix.adb, g-sopowa__mingw.adb,
	g-spogwa.adb, g-spogwa.ads.
	* impunit.adb (Non_Imp_File_Names_95): New base filename
	g-socpol in "GNAT Library Units" section for GNAT.Sockets.Poll
	unit.
	* libgnat/g-socket.ads, libgnat/g-socket.adb:
	(Raise_Socket_Error): Moved from body to private part of
	specification to use in GNAT.Sockets.Poll.
	* libgnat/g-socpol.ads, libgnat/g-socpol.adb: Main unit of the
	implementation.
	* libgnat/g-socpol__dummy.ads, libgnat/g-socpol__dummy.adb:
	Empty unit for the systems without sockets support.
	* libgnat/g-spogwa.ads, libgnat/g-spogwa.adb: Generic unit
	implementing sockets poll on top of select system call.
	* libgnat/g-sopowa.adb (Wait): Separate implementation for
	operation systems with poll system call support.
	* libgnat/g-sopowa__posix.adb (Wait): Separate implementation
	for POSIX select system call.
	* libgnat/g-sopowa__mingw.adb (Wait): Separate implementation
	for Windows select system call.
	* gsocket.h (_WIN32_WINNT): Increase to 0x0600 for winsock2.h to
	allow WSAPoll related definitions.
	* s-oscons-tmplt.c: Fix comment next to #endif for
	#if defined (__linux__) || defined (__ANDROID__) line.  Include
	<poll.h> for all except VxWorks and Windows.
	(SIZEOF_nfds_t): New definition.
	(SIZEOF_fd_type): New definition.
	(SIZEOF_pollfd_events): New definition.
	(POLLIN, POLLPRI, POLLOUT, POLLERR, POLLHUP, POLLNVAL): New
	definitions for VxWorks to be able to emulate poll on top of
	select in it.  Define POLLPRI as zero on Windows as it is not
	supported there.
	(Poll_Linkname): New definition, because the poll system call
	has different name in Windows and POSIX.
2020-10-23 04:25:07 -04:00
Justin Squirek
66e97274ce [Ada] Further Ada 2020 work on accessibility checking
gcc/ada/

	* checks.adb (Apply_Accessibility_Check): Skip checks against
	the extra accessibility of a function result when in Ada 2005
	mode or earlier.
	* exp_ch3.adb (Build_Initialization_Call): Modify accessibility
	level calls to use Accessibility_Level.
	(Expand_N_Object_Declaration): Modify accessibility level calls
	to use Accessibility_Level.
	* exp_ch4.adb (Expand_Allocator_Expression): Add static check
	for anonymous access discriminants. Remove unneeded propagation
	of accessibility actual.
	(Expand_N_In): Modify accessibility level calls to use
	Accessibility_Level.
	(Expand_N_Type_Conversion): Modify accessibility level calls to
	use Accessibility_Level.
	* exp_ch5.adb (Expand_N_Assignment_Statement): Modify
	accessibility level calls to use Accessibility_Level.
	* exp_ch6.adb (Expand_Call_Helper): Rewrite accessibility
	calculation for the extra accessibility of result actual in
	function calls, and modify accessibility level calls to use
	Accessibility_Level.
	(Check_Against_Result_Level): Removed.
	* exp_ch9.adb (Expand_N_Requeue_Statement): Add dynamic
	accessibility check for requeues
	* sem_attr.adb (Resolve_Attribute): Modify accessibility level
	calls to use Accessibility_Level.
	* sem_ch13.adb (Associate_Storage_Pool): Modify accessibility
	level calls to use Accessibility_Level.
	* sem_ch4.adb (Analyze_Call): Add static check for explicitly
	aliased formals in function calls within return statements.
	* sem_ch6.adb (Check_Return_Construct_Accessibility): Rewrite
	routine to account for non-aggregate return objects.
	(Generate_Minimum_Accessibility): Created.
	(Analyze_Call): Modify accessibility level calls to use
	Accessibility_Level.
	(Analyze_Subprogram_Body_Helper): Add generation of minimum
	accessibility for the extra accessibility of the function
	result.
	* sem_ch9.adb (Analyze_Requeue): Modify accessibility level
	calls to use Accessibility_Level.
	* sem_res.adb: (Check_Aliased_Parameters): Modify accessibility
	level calls to use Accessibility_Level.
	(Valid_Conversion): Modify accessibility level calls to use
	Accessibility_Level.
	* sem_util.adb, sem_util.ads (Accessibility_Level_Helper):
	Renamed to Accessibility_Level, add detection for functions in
	prefix notation, and add cases where to return zero when
	specified. Modified to take new, more descriptive, parameters.
	(Accessibility_Level): Created.
	(Function_Call_Level): Removed.
	(Function_Call_Or_Allocator_Level): Created to centralize the
	calculation accessibility levels for function calls and
	allocators.
	(Static_Accessibility_Level): Removed.
	(Dynamic_Accessibility_Level): Removed.
	(Get_Dynamic_Accessibility): Renamed from Get_Accessibility.
	(In_Return_Value): Created to determine if a given expression
	contributes to the current function's return value.
	(Is_Master): Created.
	(Is_Explicitly_Aliased): Created
2020-10-23 04:25:06 -04:00
Bob Duff
15e2ad005b [Ada] gnatpp: Document --no-comments-fill
gcc/ada/

	* doc/gnat_ugn/gnat_utility_programs.rst: Document
	--no-comments-fill.
2020-10-23 04:25:04 -04:00
Piotr Trojanek
48d0e61aba [Ada] Reject illegal syntax in pragma Contract_Cases
gcc/ada/

	* contracts.adb (Analyze_Entry_Or_Subprogram_Contract,
	Analyze_Subprogram_Body_Stub_Contract): Fix missing references
	to Subprogram_Variant where similar references to Contract_Cases
	are present.
	* sem_prag.adb (Analyze_Contract_Case, Analyze_Variant): Check
	that aggregate parameter has no expressions.
	(Analyze_Pragma): Replace Contract_Cases with Subprogram_Variant
	in a copy-pasted comment.
2020-10-23 04:25:04 -04:00
Philippe Gil
973c7b7e54 [Ada] GNAT.Sockets: fix comment typo
gcc/ada/

	* libgnat/g-socket.ads: Fix comment typo.
2020-10-23 04:25:03 -04:00
Eric Botcazou
b120ca616f [Ada] Implement new legality rules introduced in C.6(12) by AI12-0363
gcc/ada/

	* doc/gnat_rm/implementation_defined_pragmas.rst (VFA): Remove uage
	restrictions in conjunction with Atomic and Aliased.
	* gnat_rm.texi: Regenerate.
	* aspects.ads (Aspect_Id): Add Aspect_Full_Access_Only.
	(Is_Representation_Aspect): Likewise.
	(Aspect_Names): Likewise.
	(Aspect_Delay): Likewise.
	* einfo.ads (Is_Atomic_Or_VFA): Rename into...
	(Is_Full_Access): ...this.
	(Is_Volatile_Full_Access): Document new usage for Full_Access_Only.
	* einfo.adb (Is_Atomic_Or_VFA): Rename into...
	(Is_Full_Access): ...this.
	* freeze.ads (Is_Atomic_VFA_Aggregate): Rename into...
	(Is_Full_Access_Aggregate): ...this.
	* freeze.adb (Is_Atomic_VFA_Aggregate): Rename into...
	(Is_Full_Access_Aggregate): ...this.  Adjust to above renaming.
	(Freeze_Array_Type): Likewise.
	(Freeze_Entity): Likewise.
	* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Likewise.
	(Expand_Record_Aggregate): Likewise.
	* exp_ch4.adb (Expand_N_Op_Eq): Likewise.
	* exp_ch5.adb (Expand_Assign_Array): Likewise.
	* exp_ch8.adb (Evaluation_Required): Likewise.
	* layout.adb (Layout_Type): Likewise.
	(Set_Composite_Alignment): Likewise.
	* sem_aux.ads (Has_Rep_Item): Delete.
	* sem_aux.adb (Has_Rep_Item): Likewise.
	* sem_attr.adb (Resolve_Attribute) <Attribute_Access>: Implement
	new legality rules in C.6(12).
	* sem_ch12.adb (Instantiate_Object): Likewise.
	* sem_res.adb (Resolve_Actuals): Likewise.
	* sem_ch13.adb (Inherit_Delayed_Rep_Aspects): Deal with aspect
	Full_Access_Only.
	(Check_False_Aspect_For_Derived_Type): Likewise.
	(Make_Pragma_From_Boolean_Aspect): Test for the presence of Expr.
	Deal with aspect Full_Access_Only.
	(Analyze_Aspects_At_Freeze_Point): Likewise.
	(Analyze_One_Aspect): Do not set Delay_Required to true even for
	Always_Delay boolean aspects if they have no expression.  Force
	Delay_Required to true for aspect Full_Access_Only in all cases.
	Reject aspect Full_Access_Only if not in Ada 2020 mode.
	(Check_Aspect_At_End_Of_Declarations): Deal with empty expression.
	(Check_Aspect_At_Freeze_Point): Likewise.
	(Rep_Item_Entity): Delete.
	(Inherit_Aspects_At_Freeze_Point): Align handling for Bit_Order
	with that for Scalar_Storage_Order.
	* sem_prag.adb (Check_Atomic_VFA): Delete.
	(Check_VFA_Conflicts): Likewise.
	(Check_Full_Access_Only): New procedure.
	(Process_Atomic_Independent_Shared_Volatile): Call to implement
	the new legality checks in C.6(8/2) and mark the entity last.
	(Analyze_Pragma) <Pragma_Atomic_Components>: Remove obsolete check.
	* sem_util.ads (Is_Atomic_Or_VFA_Object): Rename into...
	(Is_Full_Access_Object): ...this.
	(Is_Subcomponent_Of_Atomic_Object): Rename into...
	(Is_Subcomponent_Of_Full_Access_Object): ...this.
	* sem_util.adb (Inherit_Rep_Item_Chain): Use Present_In_Rep_Item.
	(Is_Atomic_Or_VFA_Object): Rename into...
	(Is_Full_Access_Object): ...this.
	(Is_Subcomponent_Of_Atomic_Object): Rename into...
	(Is_Subcomponent_Of_Full_Access_Object): ...this and adjust.
	* snames.ads-tmpl (Name_Full_Access_Only): New name of aspect.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Adjust for renaming.
	(promote_object_alignment): Likewise.
	(gnat_to_gnu_field): Likewise.  Rename local variable and use
	specific qualifier in error message for Volatile_Full_Access.
	* gcc-interface/trans.c (lvalue_required_p): Likewise.
2020-10-23 04:25:02 -04:00
Arnaud Charlet
84a5809c72 [Ada] Clean up in writing of ALI files
gcc/ada/

	* lib-writ.ads, lib-writ.adb (Write_ALI): No longer read
	existing ALI files in -gnatc mode.
2020-10-23 04:25:00 -04:00
Arnaud Charlet
6c1929894c [Ada] Fix logic in C_Select under mingw
gcc/ada/

	* libgnat/g-socthi__mingw.adb (C_Select): Fix logic in code and
	make it explicit that we are checking against null values before
	dereferencing them.
2020-10-23 04:24:59 -04:00
Eric Botcazou
3a5c9377f6 [Ada] Do not use Long_Long_Long_Integer'Image with pragma Discard_Names
gcc/ada/

	* exp_imgv.adb (Expand_Image_Attribute): For an enumeration type
	subject to pragma Discard_Names, convert 'Pos to Long_Long_Integer
	before applying 'Img to the result.
2020-10-23 04:24:58 -04:00
Ed Schonberg
995e0727ce [Ada] Crash on expression function and access type
gcc/ada/

	* freeze.adb (Freeze_Type_Refs): Add guard on freezing of the
	designated type of an access type appearing in the expression,
	when expression includes an explicit dereference whose prefix
	includes a function call.
2020-10-23 04:24:58 -04:00
Piotr Trojanek
0edbf7fa12 [Ada] Fix crash in SPARK on array delta_aggregate with subtype_indication
gcc/ada/

	* exp_spark.adb (Expand_SPARK_Delta_Or_Update): Handle
	subtype_indication; do not apply range checks for ranges; add
	comment saying that others_choices is not allowed.
2020-10-23 04:24:57 -04:00