Commit Graph

185962 Commits

Author SHA1 Message Date
Bob Duff
1ac6fcf57c [Ada] Fix missing array bounds checking
gcc/ada/

	* ghost.adb: Add another special case where full analysis is
	needed. This bug is due to quirks in the way
	Mark_And_Set_Ghost_Assignment works (it happens very early,
	before name resolution is done).
2021-06-16 04:42:59 -04:00
Eric Botcazou
663e6d7960 [Ada] Use more straightforward implementation for Current_Entity_In_Scope
gcc/ada/

	* sem_util.adb (Current_Entity_In_Scope): Reimplement.
2021-06-16 04:42:59 -04:00
Piotr Trojanek
3e07c2df70 [Ada] Remove extra parens around a function call
gcc/ada/

	* sem_ch8.adb (End_Scope): Remove extra parens.
2021-06-16 04:42:59 -04:00
Javier Miranda
cbb64f6b9a [Ada] ACATS 4.1R-c611a04: Class-wide preconditions in dispatching calls
gcc/ada/

	* exp_disp.adb (Build_Class_Wide_Check): Ensure that evaluation
	of actuals is side effects free (since the check duplicates
	actuals).
2021-06-16 04:42:58 -04:00
Ed Schonberg
a2d2310d80 [Ada] Implementation of AI12-0152: legality rules for Raise_Expression
gcc/ada/

	* sem_res.adb (Resolve_Raise_Expression): Apply Ada_2020 rules
	concerning the need for parentheses around Raise_Expressions in
	various contexts.
2021-06-16 04:42:58 -04:00
Piotr Trojanek
c50041b99b [Ada] Reorder code for validity checks of unchecked conversions
gcc/ada/

	* sem_ch13.adb (Validate_Unchecked_Conversion): Move detection
	of generic types before switching to their private views; fix
	style in using AND THEN.
2021-06-16 04:42:58 -04:00
Arnaud Charlet
3311703920 [Ada] Raise expressions and unconstrained components
gcc/ada/

	* sem_ch3.adb (Analyze_Component_Declaration): Do not special
	case raise expressions.

gcc/testsuite/

	* gnat.dg/limited4.adb: Disable illegal code.
2021-06-16 04:42:57 -04:00
Sergey Rybin
a85d1c1407 [Ada] Clarify the documentation of -gnaty0 style check option
gcc/ada/

	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
	Instead of referring to the formatting of the Ada examples in
	Ada RM add use the list of checks that are actually performed.
	* gnat_ugn.texi: Regenerate.
2021-06-16 04:42:57 -04:00
Eric Botcazou
059a91ea91 [Ada] Small cleanup in C header files
gcc/ada/

	* initialize.c: Do not include vxWorks.h and fcntl.h from here.
	(__gnat_initialize) [__MINGW32__]: Remove #ifdef and attribute
	(__gnat_initialize) [init_float]: Delete.
	(__gnat_initialize) [VxWorks]: Likewise.
	(__gnat_initialize) [PA-RISC HP-UX 10]: Likewise.
	* runtime.h: Add comment about vxWorks.h include.
2021-06-16 04:42:57 -04:00
Eric Botcazou
6e96a5a503 [Ada] Small cleanup in System.Exceptions
gcc/ada/

	* libgnat/s-except.ads (ZCX_By_Default): Delete.
	(Require_Body): Likewise.
	* libgnat/s-except.adb: Replace body with pragma No_Body.
2021-06-16 04:42:57 -04:00
Richard Biener
4e56b13476 tree-optimization/101083 - fix ICE with SLP reassoc
This makes us pass down the vector type for the two-operand
SLP node build rather than picking that from operand one which,
when constant or external, could be NULL.

2021-06-16  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/101083
	* tree-vect-slp.c (vect_slp_build_two_operator_nodes): Get
	vectype as argument.
	(vect_build_slp_tree_2): Adjust.

	* gcc.dg/vect/pr97832-4.c: New testcase.
2021-06-16 08:58:28 +02:00
GCC Administrator
ede6c3568f Daily bump. 2021-06-16 00:17:05 +00:00
David Malcolm
ec3fafa9ec analyzer: fix bitfield endianness issues [PR99212,PR101082]
Looks like my patch for PR analyzer/99212 implicitly assumed
little-endian, which the following patch fixes.

Fixes bitfields-1.c on:
- armeb-none-linux-gnueabihf
- cris-elf
- powerpc64-darwin
- s390-linux-gnu

gcc/analyzer/ChangeLog:
	PR analyzer/99212
	PR analyzer/101082
	* engine.cc: Include "target.h".
	(impl_run_checkers): Log BITS_BIG_ENDIAN, BYTES_BIG_ENDIAN, and
	WORDS_BIG_ENDIAN.
	* region-model-manager.cc
	(region_model_manager::maybe_fold_binop): Move support for masking
	via ARG0 & CST into...
	(region_model_manager::maybe_undo_optimize_bit_field_compare):
	...this new function.  Flatten by converting from nested
	conditionals to a series of early return statements to reject
	failures.  Reject if type is not unsigned_char_type_node.
	Handle BYTES_BIG_ENDIAN when determining which bits are bound
	in the binding_map.
	* region-model.h
	(region_model_manager::maybe_undo_optimize_bit_field_compare):
	New decl.
	* store.cc (bit_range::dump): New function.
	* store.h (bit_range::dump): New decl.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
2021-06-15 17:53:34 -04:00
Martin Sebor
71790f398e Consider size_t mangling as unsigned int and long [PR100876].
gcc/ChangeLog:

	PR middle-end/100876
	* builtins.c: (gimple_call_return_array): Account for size_t
	mangling as either unsigned int or unsigned long
2021-06-15 12:46:54 -06:00
Jonathan Wakely
8b93548778 libstdc++: Make ranges CPOs final and not addressable
This restricts the API of the CPOs and other function objects so they
cannot be misused by deriving from them or taking their addresses.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	* include/bits/ranges_base.h (ranges::begin, ranges::end)
	(ranges::cbegin, ranges::cend, ranges::rbeing, ranges::rend)
	(ranges::crbegin, ranges::crend, ranges::size, ranges::ssize)
	(ranges::empty, ranges::data, ranges::cdata): Make types final.
	Add deleted operator& overloads.
	(ranges::advance, ranges::distance, ranges::next, ranges::prev):
	Likewise.
	* testsuite/std/ranges/headers/ranges/synopsis.cc: Replace
	ill-formed & expressions with using-declarations. Add checks for
	other function objects.
2021-06-15 18:20:06 +01:00
Jonathan Wakely
9245b0e84c libstdc++: Add noexcept specifiers to some range adaptors
Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	* include/bits/ranges_util.h (view_interface): Add noexcept to
	empty, operator bool, data and size members.
	(subrange): Add noexcept to constructors.
	* include/std/ranges (single_view, ref_view): Add noexcept to
	constructors.
	(views::single, views::all): Add noexcept.
	* testsuite/std/ranges/adaptors/all.cc: Check noexcept.
	* testsuite/std/ranges/single_view.cc: Likewise.
2021-06-15 18:20:06 +01:00
Jonathan Wakely
a88fc03ba7 libstdc++: Remove precondition checks from ranges::subrange
The assertion in the subrange constructor causes semantic changes,
because the call to ranges::distance performs additional operations that
are not part of the constructor's specification. That will fail to
compile if the iterator is move-only, because the argument to
ranges::distance is passed by value. It will modify the subrange if the
iterator is not a forward iterator, because incrementing the copy also
affects the _M_begin member. Those problems could be prevented by using
if-constexpr to only do the assertion for copyable forward iterators,
but the call to ranges::distance can also prevent the constructor being
usable in constant expressions. If the member initializers are usable in
constant expressions, but iterator increments of equality comparisons
are not, then the checks done by __glibcxx_assert might
make constant evaluation fail.

This change removes the assertion. Additionally, a new typedef is
introduced to simplify the declarations using __make_unsigned_like_t on
the iterator's difference type.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	* include/bits/ranges_util.h (subrange): Add __size_type typedef
	and use it to simplify declarations.
	(subrange(i, s, n)): Remove assertion.
	* testsuite/std/ranges/subrange/constexpr.cc: New test.
2021-06-15 18:20:06 +01:00
Jonathan Wakely
cb326a6442 libstdc++: Use function object for __decay_copy helper
By changing __cust_access::__decay_copy from a function template to a
function object we avoid ADL. That means it's fine to call it
unqualified (the compiler won't waste time doing ADL in associated
namespaces, and won't try to complete associated types).

This also makes some other minor simplications to other concepts for the
[range.access] CPOs.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	* include/bits/iterator_concepts.h (__cust_access::__decay_copy):
	Replace with function object.
	(__cust_access::__member_begin, ___cust_access::_adl_begin): Use
	__decay_copy unqualified.
	* include/bits/ranges_base.h (__member_end, __adl_end):
	Likewise. Use __range_iter_t for type of ranges::begin.
	(__member_rend): Use correct value category for rbegin argument.
	(__member_data): Use __decay_copy unqualified.
	(__begin_data): Use __range_iter_t for type of ranges::begin.
2021-06-15 18:20:06 +01:00
Jeff Law
6d43ec5096 Minor improvement to compare elimination
gcc/
	* compare-elim.c (try_eliminate_compare): Run DCE to clean things
	up before eliminating comparisons.
2021-06-15 12:43:42 -04:00
Aldy Hernandez
4602714382 range-ops: (nonzero | X) is nonzero
For bitwise or, nonzero|X is always nonzero.  Make sure we don't drop to
varying in this case.

gcc/ChangeLog:

	* range-op.cc (operator_bitwise_or::wi_fold): Make sure
	nonzero|X is nonzero.
	(range_op_bitwise_and_tests): Add tests for above.
2021-06-15 18:41:09 +02:00
Carl Love
913b13fcb1 Fix for vcmpequt builtin
The vcmpequt builtin define eqvv1ti3 points to the eqv define instruction
for the eqv instruction.  The vcmpequt builtin define should point to the
vector_eqv1ti instruction definition for the vcmpequq instruction.

2021-06-15  Carl Love  <cel@us.ibm.com>

gcc/ChangeLog
	PR target/101022
	* config/rs6000/rs6000-builtin.def (VCMPEQUT): Fix the ICODE for the
	enum definition.
	(VRLQ, VSLQ, VSRQ, VSRAQ): Remove unused BU_P10_OVERLOAD_2
	definitions.
2021-06-15 10:43:33 -05:00
Tobias Burnus
1de31913d2 Fortran/OpenMP: Extend defaultmap clause for OpenMP 5 [PR92568]
PR fortran/92568

gcc/fortran/ChangeLog:

	* dump-parse-tree.c (show_omp_clauses): Update for defaultmap.
	* f95-lang.c (LANG_HOOKS_OMP_ALLOCATABLE_P,
	LANG_HOOKS_OMP_SCALAR_TARGET_P): New.
	* gfortran.h (enum gfc_omp_defaultmap,
	enum gfc_omp_defaultmap_category): New.
	* openmp.c (gfc_match_omp_clauses): Update defaultmap matching.
	* trans-decl.c (gfc_finish_decl_attrs): Set GFC_DECL_SCALAR_TARGET.
	* trans-openmp.c (gfc_omp_allocatable_p, gfc_omp_scalar_target_p): New.
	(gfc_omp_scalar_p): Take 'ptr_alloc_ok' argument.
	(gfc_trans_omp_clauses, gfc_split_omp_clauses): Update for
	defaultmap changes.
	* trans.h (gfc_omp_scalar_p): Update prototype.
	(gfc_omp_allocatable_p, gfc_omp_scalar_target_p): New.
	(struct lang_decl): Add scalar_target.
	(GFC_DECL_SCALAR_TARGET, GFC_DECL_GET_SCALAR_TARGET): New.

gcc/ChangeLog:

	* gimplify.c (enum gimplify_defaultmap_kind): Add GDMK_SCALAR_TARGET.
	(struct gimplify_omp_ctx): Extend defaultmap array by one.
	(new_omp_context): Init defaultmap[GDMK_SCALAR_TARGET].
	(omp_notice_variable): Update type classification for Fortran.
	(gimplify_scan_omp_clauses): Update calls for new argument; handle
	GDMK_SCALAR_TARGET; for Fortran, GDMK_POINTER avoid GOVD_MAP_0LEN_ARRAY.
	* langhooks-def.h (lhd_omp_scalar_p): Add 'ptr_ok' argument.
	* langhooks.c (lhd_omp_scalar_p): Likewise.
	(LANG_HOOKS_OMP_ALLOCATABLE_P, LANG_HOOKS_OMP_SCALAR_TARGET_P): New.
	(LANG_HOOKS_DECLS): Add them.
	* langhooks.h (struct lang_hooks_for_decls): Add new hooks, update
	omp_scalar_p pointer type to include the new bool argument.

libgomp/ChangeLog:

	* testsuite/libgomp.fortran/defaultmap-8.f90: New test.

gcc/testsuite/ChangeLog:

	* gfortran.dg/gomp/pr99928-1.f90: Uncomment 'defaultmap(none)'.
	* gfortran.dg/gomp/pr99928-2.f90: Uncomment 'defaultmap(none)'.
	* gfortran.dg/gomp/pr99928-3.f90: Uncomment 'defaultmap(none)'.
	* gfortran.dg/gomp/pr99928-4.f90: Uncomment 'defaultmap(none)'.
	* gfortran.dg/gomp/pr99928-5.f90: Uncomment 'defaultmap(none)'.
	* gfortran.dg/gomp/pr99928-6.f90: Uncomment 'defaultmap(none)'.
	* gfortran.dg/gomp/pr99928-8.f90: Uncomment 'defaultmap(none)'.
	* gfortran.dg/gomp/defaultmap-1.f90: New test.
	* gfortran.dg/gomp/defaultmap-2.f90: New test.
	* gfortran.dg/gomp/defaultmap-3.f90: New test.
	* gfortran.dg/gomp/defaultmap-4.f90: New test.
	* gfortran.dg/gomp/defaultmap-5.f90: New test.
	* gfortran.dg/gomp/defaultmap-6.f90: New test.
	* gfortran.dg/gomp/defaultmap-7.f90: New test.
2021-06-15 16:07:11 +02:00
David Malcolm
9a2c9579fd analyzer: track dynamic extents of regions
This patch extends region_model to add tracking of the sizes of
dynamically-allocated regions, both on the heap (via malloc etc) and
stack (via alloca).  It adds enough purging of this state to avoid
blowing up any existing analyzer test cases.

The state can be queried via a new "__analyzer_dump_capacity" for use
in DejaGnu tests but other than that doesn't do anything - I have
various followup experiments that make use of this.

gcc/analyzer/ChangeLog:
	* engine.cc (exploded_node::on_stmt): Handle __analyzer_dump_capacity.
	(exploded_node::on_stmt): Drop m_sm_changes from on_stmt_flags.
	(state_change_requires_new_enode_p): New function...
	(exploded_graph::process_node): Call it, rather than querying
	flags.m_sm_changes, so that dynamic-extent differences can also
	trigger the splitting of nodes.
	* exploded-graph.h (struct on_stmt_flags): Drop field m_sm_changes.
	* program-state.cc (program_state::detect_leaks): Purge dead
	heap-allocated regions from dynamic extents.
	(selftest::test_program_state_1): Fix type of "size_in_bytes".
	(selftest::test_program_state_merging): Likewise.
	* region-model-impl-calls.cc
	(region_model::impl_call_analyzer_dump_capacity): New.
	(region_model::impl_call_free): Remove dynamic extents from the
	freed region.
	* region-model-reachability.h
	(reachable_regions::begin_mutable_base_regs): New.
	(reachable_regions::end_mutable_base_regs): New.
	* region-model.cc: Include "tree-object-size.h".
	(region_model::region_model): Support new field m_dynamic_extents.
	(region_model::operator=): Likewise.
	(region_model::operator==): Likewise.
	(region_model::dump_to_pp): Dump sizes of dynamic regions.
	(region_model::handle_unrecognized_call): Purge dynamic extents
	from any regions that have escaped mutably:.
	(region_model::get_capacity): New function.
	(region_model::add_constraint): Unset dynamic extents when a
	heap-allocated region's address is NULL.
	(region_model::unbind_region_and_descendents): Purge dynamic
	extents of unbound regions.
	(region_model::can_merge_with_p): Call
	m_dynamic_extents.can_merge_with_p.
	(region_model::create_region_for_heap_alloc): Assert that
	size_in_bytes's type is compatible with size_type_node.  Update
	for renaming of record_dynamic_extents to set_dynamic_extents.
	(region_model::create_region_for_alloca): Likewise.
	(region_model::record_dynamic_extents): Rename to...
	(region_model::set_dynamic_extents): ...this.  Assert that
	size_in_bytes's type is compatible with size_type_node.  Add it
	to the m_dynamic_extents map.
	(region_model::get_dynamic_extents): New.
	(region_model::unset_dynamic_extents): New.
	(selftest::test_state_merging): Fix type of "size".
	(selftest::test_malloc_constraints): Likewise.
	(selftest::test_malloc): Verify dynamic extents.
	(selftest::test_alloca): Likewise.
	* region-model.h (region_to_value_map::is_empty): New.
	(region_model::dynamic_extents_t): New typedef.
	(region_model::impl_call_analyzer_dump_capacity): New decl.
	(region_model::get_dynamic_extents): New function.
	(region_model::get_dynamic_extents): New decl.
	(region_model::set_dynamic_extents): New decl.
	(region_model::unset_dynamic_extents): New decl.
	(region_model::get_capacity): New decl.
	(region_model::record_dynamic_extents): Rename to set_dynamic_extents.
	(region_model::m_dynamic_extents): New field.

gcc/ChangeLog:
	* doc/analyzer.texi
	(Special Functions for Debugging the Analyzer): Add
	__analyzer_dump_capacity.

gcc/testsuite/ChangeLog:
	* gcc.dg/analyzer/analyzer-decls.h (__analyzer_dump_capacity): New decl.
	* gcc.dg/analyzer/capacity-1.c: New test.
	* gcc.dg/analyzer/capacity-2.c: New test.
	* gcc.dg/analyzer/capacity-3.c: New test.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
2021-06-15 09:31:26 -04:00
David Malcolm
d726a57b99 analyzer: add class region_to_value_map
Add a class for associating symbolic values with regions, for use
initially for recording the sizes of dynamically-allocated regions,
though this also could potentially be used for e.g. tracking strlen()
values.

gcc/analyzer/ChangeLog:
	* region-model.cc (region_to_value_map::operator=): New.
	(region_to_value_map::operator==): New.
	(region_to_value_map::dump_to_pp): New.
	(region_to_value_map::dump): New.
	(region_to_value_map::can_merge_with_p): New.
	* region-model.h (class region_to_value_map): New class.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
2021-06-15 09:30:18 -04:00
David Malcolm
954c923529 analyzer testsuite: add explode-2a.c [PR101068]
Due to a bug (PR analyzer/101068), the analyzer only explores a limited
subset of the possible paths through gcc.dg/analyzer/explode-2.c,
and this artifically helps stop this testcase from exploding.
I intend to fix this at some point, but for now, this patch adds a
revised test case which captures the effective CFG due to the bug, so
that we explicitly have test coverage for that CFG.

gcc/testsuite/ChangeLog:
	PR analyzer/101068
	* gcc.dg/analyzer/explode-2a.c: New test.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
2021-06-15 09:29:23 -04:00
Steve Baird
ba998f6407 [Ada] Avoid unhelpful dead code warnings
gcc/ada/

	* exp_util.adb (Kill_Dead_Code): Generalize the existing
	handling of if statements to handle case statements similarly.
2021-06-15 06:19:40 -04:00
Eric Botcazou
759df6fd41 [Ada] Remove couple of obsolete declarations
gcc/ada/

	* raise.h (_gnat_builtin_longjmp): Delete.
	(set_gnat_exit_status): Likewise.
2021-06-15 06:19:39 -04:00
Piotr Trojanek
2a344c7982 [Ada] Enable removal of side-effects in component declarations
gcc/ada/

	* exp_util.adb (Possible_Side_Effect_In_SPARK): Handle component
	declaration just like full type and subtype declarations.
2021-06-15 06:19:38 -04:00
Yannick Moy
6ae60a649e [Ada] Extend function to retrieve first/last nodes to all declarations
gcc/ada/

	* errout.adb (First_And_Last_Node): Also apply to arbitrary late
	declarations, not only subprogram specs.
2021-06-15 06:19:37 -04:00
Bob Duff
40f464256c [Ada] Incorrect Reinit_Field_To_Zero calls for concurrent entities
gcc/ada/

	* sem_ch3.adb (Make_Class_Wide_Type): Make sure all the calls to
	Reinit_Field_To_Zero are for the correct Ekinds.
2021-06-15 06:19:36 -04:00
Bob Duff
811b8aa536 [Ada] No_Task_Parts aspect
gcc/ada/

	* aspects.ads (No_Task_Parts): New aspect.
	* snames.ads-tmpl: Add the aspect name.
	* exp_ch6.adb (Might_Have_Tasks): Return False if this is a
	class-wide type whose specific type has No_Task_Parts.
	* freeze.adb (Check_No_Parts_Violations): This is an adaptation
	of the procedure formerly known as
	Check_No_Controlled_Parts_Violations, which now supports both
	No_Controlled_Parts and No_Task_Parts.  It takes a parameter
	indicating which aspect is being checked.
	(Freeze_Entity): Call Check_No_Parts_Violations for both
	aspects.
	* sem_ch13.adb (Analyze_Aspect_Specifications): The code for
	Aspect_No_Controlled_Parts already works as is with
	Aspect_No_Task_Parts.
	* libgnat/a-iteint.ads: Add No_Task_Parts aspect to the two
	iterator iterfaces.
	* doc/gnat_rm/implementation_defined_aspects.rst: Add
	documentation for the No_Task_Parts aspect.
	* gnat_rm.texi: Regenerate.
2021-06-15 06:19:35 -04:00
Arnaud Charlet
4cee20bb1e [Ada] Fix handling of scopes for subprogram calls in unnesting
gcc/ada/

	* exp_unst.adb (Unnest_Subprogram.Build_Table.Visit_Node): Fix
	handling of scopes for subprogram calls.
2021-06-15 06:19:34 -04:00
Piotr Trojanek
903655af70 [Ada] Fix detection of access-to-variable types
gcc/ada/

	* sem_prag.adb: Fix typos in comments related to access types.
	* sem_util.adb (Is_Access_Variable): Stronger condition.
2021-06-15 06:19:33 -04:00
Arnaud Charlet
abcf517497 [Ada] Use runtime from base compiler during stage1
gcc/ada/

	* Make-generated.in: Add rule to copy runtime files needed
	during stage1.
	* raise.c: Remove obsolete symbols used during bootstrap.
	* gcc-interface/Make-lang.in: Do not use libgnat sources during
	stage1.
	(GNAT_ADA_OBJS, GNATBIND_OBJS): Split in two parts, the common
	part and the part only used outside of stage1.
	(ADA_GENERATED_FILES): Add runtime files needed during bootstrap
	when recent APIs are needed.
	(ada/b_gnatb.adb): Remove prerequisite.
	* gcc-interface/system.ads: Remove obsolete entries.
2021-06-15 06:19:32 -04:00
Eric Botcazou
472c843467 [Ada] Minor consistency fix for Windows SEH
gcc/ada/

	* raise-gcc.c (__gnat_personality_seh0): Use PERSONALITY_FUNCTION.
2021-06-15 06:19:31 -04:00
Ed Schonberg
9e47051a37 [Ada] AI12-0138: Iterators and other nonoverridable aspects
gcc/ada/

	* sem_util.adb (Is_Confirming): Separate the handling of
	Implicit_Dereference, for which no pragma is generated but which
	is already checked for legality in Sem_Ch13, including renamed
	discriminants in a derived type.
	(Is_Confirming, Same_Name): For expanded names, only check
	matching of selector, because prefix may correspond to original
	and derived types with different names and/or scopes. Semantic
	checks on aspect expression have already verified its legality.
	Add comments regarding possible gaps in RM description of the
	feature.
2021-06-15 06:19:30 -04:00
Gary Dismukes
3d4fbcb4c9 [Ada] Error when passing subprogram'Access to null-defaulted formal subprogram
gcc/ada/

	* freeze.adb (Freeze_Subprogram): Don't propagate conventions
	Intrinsic or Entry to anonymous access-to-subprogram types
	associated with subprograms having those conventions. Update
	related comment.
	* sem_attr.adb (Resolve_Attribute, Attribute_*Access): Remove
	special-case warning code for cases where a called subprogram
	has convention Intrinsic as well as its formal's type (the
	expected type for the Access attribute), since this case can no
	longer occur.
2021-06-15 06:19:29 -04:00
Piotr Trojanek
d675f35287 [Ada] Fix typos in comment about expansion of attribute Image
gcc/ada/

	* exp_imgv.adb (Expand_User_Defined_Enumeration_Image): Fix
	typos.
2021-06-15 06:19:28 -04:00
Bob Duff
df3db34e57 [Ada] Allow Known_Static_Component_Size (etc) on private types
gcc/ada/

	* einfo-utils.adb (Known_Component_Size,
	Known_Static_Component_Size, Unknown_Component_Size): Use
	Implementation_Base_Type instead of Base_Type.
2021-06-15 06:19:27 -04:00
Bob Duff
65067cb65d [Ada] Add Interface_Name field to E_Loop_Parameter
gcc/ada/

	* gen_il-gen-gen_entities.adb (E_Loop_Parameter): Add
	Interface_Name field.
2021-06-15 06:19:26 -04:00
Bob Duff
d31c2b9433 [Ada] Disable certain checks in predefined units
gcc/ada/

	* sem_cat.adb (Check_Non_Static_Default_Expr): Allow nonstatic
	expression in predefined unit with pragma Preelaborate.
2021-06-15 06:19:26 -04:00
Yannick Moy
688fb8553b [Ada] Clarify the semantics of signed intrinsic shift operations
gcc/ada/

	* doc/gnat_rm/intrinsic_subprograms.rst: More details on shift
	operations for signed types. Also add the missing Import and
	Convention on the example.
	* gnat_rm.texi: Regenerate.
2021-06-15 06:19:25 -04:00
Eric Botcazou
385484ef92 [Ada] Small cleanup in exception handling C code
gcc/ada/

	* raise-gcc.c: Include <cstdarg> instead of <stdarg.h> in C++.
	Include <stdbool.h> and unconditionally <stdlib.h> in C.
2021-06-15 06:19:24 -04:00
Piotr Trojanek
9880492caa [Ada] Remove redundant guard from Find_Overlaid_Entity
gcc/ada/

	* sem_util.ads (Find_Overlaid_Entity): Simplify comment for
	spec.
	* sem_util.adb (Find_Overlaid_Entity): Remove defensive code
	from body.
2021-06-15 06:19:23 -04:00
Eric Botcazou
86347b2d8d [Ada] Remove const qualifier on a couple of pointed-to types
gcc/ada/

	* argv.c: Add include of <stdlib.h> for the runtime.
	(gnat_argv): Change type to char ** and initialize to NULL.
	(gnat_envp): Likewise.
	* argv-lynxos178-raven-cert.c: Add include of <stdlib.h>.
	(gnat_argv): Change type to char ** and initialize to NULL.
	(gnat_envp): Likewise.
2021-06-15 06:19:22 -04:00
Bob Duff
b233916016 [Ada] Fix bug in if_expressions introduced by var-size nodes changes
gcc/ada/

	* gen_il-gen.adb (Setter_Needs_Parent): Add missing
	Then_Actions.  Fix self-contradictory comment.
	* exp_util.adb (Insert_Actions): Minor comment improvments.
2021-06-15 06:19:21 -04:00
Arnaud Charlet
f1e93d3f1a [Ada] Add support for folding more and/or expressions
gcc/ada/

	* sem_eval.adb (Eval_Logical_Op, Test_Expression_Is_Foldable):
	Add support for folding more "and"/"or" expressions.
	* exp_util.adb (Side_Effect_Free): Fix handling of membership
	tests.
2021-06-15 06:19:20 -04:00
Piotr Trojanek
69558e562c [Ada] Replace repeated calls by references to a local object
gcc/ada/

	* sem_res.adb (Resolve_Actual): Replace repeated calls to
	"Etype (F)" with references to "F_Typ", which keeps the results
	of exactly that call.
2021-06-15 06:19:19 -04:00
Bob Duff
5fdd694a74 [Ada] Variable-sized node types: improve error messages
gcc/ada/

	* gen_il-gen.adb (To_Bit_Offset): Use 'Base to avoid overflow in
	computations in Last_Bit when Offset = 'Last.
	(Choose_Offset): Give a better error message when we run out of
	fields.  In particular, point out that
	Gen_IL.Internals.Bit_Offset'Last needs to be increased.
2021-06-15 06:19:18 -04:00
Bob Duff
a7cadd1860 [Ada] Variable-sized node types -- cleanup
gcc/ada/

	* atree.ads, einfo-utils.ads, einfo-utils.adb, fe.h, gen_il.adb,
	gen_il.ads, gen_il-gen-gen_entities.adb,
	gen_il-gen-gen_nodes.adb, sem_ch12.adb, sem_ch3.adb,
	sem_util.adb, sinfo-utils.ads, treepr.adb, types.ads: Clean up
	??? comments and other comments.
	* atree.adb: Clean up ??? comments and other comments.
	(Validate_Node): Fix bug: "Off_0 (N) < Off_L (N)"
	should be "Off_0 (N) <= Off_L (N)".
	* gen_il-gen.adb, gen_il-gen.ads: Clean up ???
	comments and other comments.  Add support for getter-specific
	and setter-specific preconditions.  Detect the error of putting
	a field in the wrong subrange.  Misc cleanup.
	(Node_Field vs. Entity_Field): Clean up Nmake.  Improve
	comments.
	* gen_il-utils.ads: Misc cleanup. Move...
	* gen_il-internals.ads: ... here.
	* gen_il-utils.adb: Misc cleanup. Move...
	* gen_il-internals.adb: ... here.
	* gen_il-fields.ads: Move Was_Default_Init_Box_Association,
	which was in the wrong subrange.  Add comments.  Misc cleanup.
	* gen_il-types.ads: Add Named_Access_Kind.
	* sinfo-cn.adb: Clean up ??? comments and other comments.
	Remove redundant assertions.
	* einfo.ads, sinfo.ads: Clean up ??? comments and other
	comments.  Remove all the comments indicating field offsets.
	These are obsolete now that Gen_IL computes the offsets
	automatically.
2021-06-15 06:19:16 -04:00