Commit Graph

164322 Commits

Author SHA1 Message Date
Nathan Sidwell c1b48b2929 [PATCH] A couple of line map fixes
https://gcc.gnu.org/ml/gcc-patches/2018-10/msg00623.html
	* include/line-map.h (LINEMAPS_MACRO_LOWEST_LOCATION): Fix
	off-by-one error.
	* line-map.c (linemap_enter_macro): Use RAII.  Clear all of the
	macro_locations.

From-SVN: r265037
2018-10-11 12:42:37 +00:00
Jonathan Wakely c7790bdbd9 Make ext allocators support heterogeneous equality comparison
The Allocator requirements include the ability to compare different
specializations of the same allocator class template. This did not work
for __gnu_cxx::new_allocator and other extension allocators.  This patch
replaces the equality operators for those allocators with inline friends
that support heterogeneous comparisons.  (I'm not changing all ext
allocators because some are bit-rotted already).

Additionally, the equality operators for comparing two std::allocator
objects of the same type are now defined as inline friends. Those
overloads don't need to be declared at namespace scope, because they
aren't specified in the standard (but they're needed in this
implementation to avoid ambiguities caused by the extra overloads
defined for the base allocator type).

	* include/bits/allocator.h
	(operator==(const allocator<_Tp>&, const allocator<_Tp>))
	(operator!=(const allocator<_Tp>&, const allocator<_Tp>)): Replace
	with inline friends.
	* include/ext/debug_allocator.h (operator==, operator!=): Replace
	with inline friend functions that compare to rebound allocators.
	* include/ext/malloc_allocator.h (operator==, operator!=): Likewise.
	* include/ext/new_allocator.h (operator==, operator!=): Likewise.
	* testsuite/ext/debug_allocator/eq.cc: New test.
	* testsuite/ext/ext_pointer/alloc_eq.cc: New test.
	* testsuite/ext/malloc_allocator/eq.cc: New test.
	* testsuite/ext/new_allocator/eq.cc: New test.

From-SVN: r265036
2018-10-11 12:32:29 +01:00
Martin Jambor e7336b8e23 [testsuite] Further fixes to warn-abs-1.c
2018-10-11  Martin Jambor  <mjambor@suse.cz>

	testsuite/
	* gcc.dg/warn-abs-1.c: Guard tests assuming size of long double is
	greater that the size of double by target large_long double.

From-SVN: r265035
2018-10-11 10:53:49 +02:00
Jakub Jelinek 46c6269045 c-lex.c (c_common_has_attribute): Return 201803 instead of 20180312 for no_unique_address.
* c-lex.c (c_common_has_attribute): Return 201803 instead of 20180312
	for no_unique_address.

	* g++.dg/cpp2a/feat-cxx2a.C: New test.

From-SVN: r265034
2018-10-11 09:13:55 +02:00
Jakub Jelinek f7904392b7 re PR c++/87547 (G++ reports bad type names for bit-field members)
PR c++/87547
	* rtti.c (get_tinfo_decl_dynamic): Use unlowered_expr_type instead
	of TREE_TYPE.

	* g++.dg/rtti/typeid12.C: New test.

From-SVN: r265033
2018-10-11 09:07:22 +02:00
GCC Administrator 6b0649cba3 Daily bump.
From-SVN: r265032
2018-10-11 00:16:55 +00:00
Eric Botcazou a1a0e08d63 re PR middle-end/87574 (ICE in add_data_member_location_attribute at gcc/gcc/dwarf2out.c:19226 since r264943)
PR middle-end/87574
	* cgraphunit.c (cgraph_node::expand_thunk): Force DECL_IGNORED_P on
	the thunk when expanding to GIMPLE.

From-SVN: r265028
2018-10-10 22:54:04 +00:00
Marek Polacek 8e9558f029 PR c++/87567 - constexpr rejects call to non-constexpr function.
* constexpr.c (potential_constant_expression_1) <case FOR_STMT>: Return
	true if the condition is always false.
	<case WHILE_STMT>: Likewise.

	* g++.dg/cpp1y/constexpr-loop7.C: New test.

From-SVN: r265027
2018-10-10 21:11:18 +00:00
Paul A. Clarke c6e8b0b3af Fat-fingered my recent patch adding the SSE3 testcases for powerpc,
most likely by twice applying the patch which added the testcases.

This patch removes the duplicated code.

[gcc/testsuite]

2018-10-10  Paul A. Clarke  <pc@us.ibm.com>

	PR target/87579
	* gcc.target/powerpc/sse3-check.h: Remove duplicated code.
	* gcc.target/powerpc/sse3-addsubps.c: Likewise.
	* gcc.target/powerpc/sse3-addsubpd.c: Likewise.
	* gcc.target/powerpc/sse3-haddps.c: Likewise.
	* gcc.target/powerpc/sse3-hsubps.c: Likewise.
	* gcc.target/powerpc/sse3-haddpd.c: Likewise.
	* gcc.target/powerpc/sse3-hsubpd.c: Likewise.
	* gcc.target/powerpc/sse3-lddqu.c: Likewise.
	* gcc.target/powerpc/sse3-movsldup.c: Likewise.
	* gcc.target/powerpc/sse3-movshdup.c: Likewise.
	* gcc.target/powerpc/sse3-movddup.c: Likewise.
	* gcc.target/powerpc/pr37191.c: Likewise.

From-SVN: r265026
2018-10-10 20:52:48 +00:00
Bernd Edlinger 3846751b82 varasm.c (mergeable_string_section): Don't try to move zero-length strings to the merge section.
2018-10-10  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * varasm.c (mergeable_string_section): Don't try to move zero-length
        strings to the merge section.

From-SVN: r265025
2018-10-10 18:32:47 +00:00
Martin Sebor e3129f233c PR c/54391 - transparent_union typedef'ing inconsistent
gcc/testsuite/ChangeLog:
	* gcc.dg/transparent-union-6.c: New.

From-SVN: r265024
2018-10-10 11:09:26 -06:00
Jonathan Wakely 422a9f7789 PR libstdc++/87544 limit max_size() to PTRDIFF_MAX / sizeof(T)
The C++17 standard requires the default implementation for
allocator_traits::max_size to return SIZE_MAX / sizeof(value_type).
That causes GCC to warn because the value could be larger than can
sensibly be passed to malloc. This patch changes the new_allocator and
malloc_allocator max_size() members to use PTRDIFF_MAX instead of
SIZE_MAX (and because they define it, the allocator_traits default isn't
used). This also changes vector::max_size to impose a sensible limit
using PTRDIFF_MAX for cases where the value from the allocator or
allocator_traits is not sensible.

	PR libstdc++/87544
	* include/bits/stl_vector.h (vector::_S_max_size): Limit size to
	PTRDIFF_MAX / sizeof(value_type).
	* include/ext/malloc_allocator.h (malloc_allocator::max_size):
	Likewise.
	* include/ext/new_allocator.h (new_allocator::max_size): Likewise.
	* testsuite/23_containers/vector/allocator/minimal.cc: Adjust
	expected value for max_size().
	* testsuite/23_containers/vector/capacity/87544.cc: New test.

From-SVN: r265021
2018-10-10 16:39:33 +01:00
Martin Sebor d3a46ecb38 memchr-1.c: Avoid assuming 4-byte wchar_t.
gcc/testsuite/ChangeLog:

	* gcc.c-torture/execute/memchr-1.c: Avoid assuming 4-byte wchar_t.
	Add a test for 2-byte wchar_t.
	* gcc.dg/builtin-memchr.c: New test.

From-SVN: r265020
2018-10-10 09:33:43 -06:00
Uros Bizjak 7be65e79f6 re PR target/87573 (error: could not split insn since r264877)
PR target/87573
	* config/i386/mmx.md (const_vector 0 -> mem splitter): New splitter.

testsuite/ChangeLog:

	PR target/87573
	* gcc.target/i386/pr87573.c: New test.

From-SVN: r265019
2018-10-10 17:02:47 +02:00
Jakub Jelinek 1f10b5b8db re PR target/87550 (Intrinsics for rdpmc (__rdpmc, __builtin_ia32_rdpmc) are interpreted as pure functions)
PR target/87550
	* config/i386/i386-builtin.def (IX86_BUILTIN_RDPMC): Move from args set
	to special_args set.

	* gcc.target/i386/pr87550.c: New test.

From-SVN: r265007
2018-10-10 11:28:26 +02:00
Jakub Jelinek 1c07061211 re PR c/87286 (ICE on vectors of enums)
PR c/87286
	* gcc.dg/pr87286.c: Add -Wno-psabi to dg-options.

From-SVN: r265006
2018-10-10 11:03:40 +02:00
Richard Biener 6cdd5aecfb sse.md (reduc_plus_scal_v8df, [...]): Merge into pattern reducing to half width and recursing and pattern terminating...
2018-10-10  Richard Biener  <rguenther@suse.de>

	* config/i386/sse.md (reduc_plus_scal_v8df, reduc_plus_scal_v4df,
	reduc_plus_scal_v2df, reduc_plus_scal_v16sf, reduc_plus_scal_v8sf,
	reduc_plus_scal_v4sf): Merge into pattern reducing to half width
	and recursing and pattern terminating the recursion on SSE
	vector width using ix86_expand_reduc.
	(reduc_sminmax_scal_<mode>): Split into part reducing to half
	width and recursing and SSE2 vector variant doing the final
	reduction with ix86_expand_reduc.
	(reduc_uminmax_scal_<mode>): Likewise for the AVX512 variants
	with terminating the recursion at AVX level, splitting that
	to SSE there.

From-SVN: r265004
2018-10-10 07:05:47 +00:00
GCC Administrator fa23d4e122 Daily bump.
From-SVN: r265003
2018-10-10 00:16:55 +00:00
David Malcolm c24300baea Cleanup of libcpp diagnostic callbacks
This patch renames the "error" callback within libcpp
to "diagnostic", and uses the pair of enums in cpplib.h, rather
than passing two different kinds of "int" around.

gcc/c-family/ChangeLog:
	* c-common.c (c_option_controlling_cpp_error): Rename to...
	(c_option_controlling_cpp_diagnostic): ...this, and convert
	"reason" from int to enum.
	(c_cpp_error): Rename to...
	(c_cpp_diagnostic): ...this, converting level and reason to enums.
	* c-common.h (c_cpp_error): Rename to...
	(c_cpp_diagnostic): ...this, converting level and reason to enums.
	* c-opts.c (c_common_init_options): Update for renaming.

gcc/fortran/ChangeLog:
	* cpp.c (gfc_cpp_init_0): Update for renamings.
	(cb_cpp_error): Rename to...
	(cb_cpp_diagnostic): ...this, converting level and reason to
	enums.

gcc/ChangeLog:
	* genmatch.c (error_cb): Rename to...
	(diagnostic_cb): ...this, converting int params to enums.
	(fatal_at): Update for renaming.
	(warning_at): Likewise.
	(main): Likewise.
	* input.c (selftest::ebcdic_execution_charset::apply):
	Update for renaming of...
	(selftest::ebcdic_execution_charset::on_error): ...this, renaming
	to...
	(selftest::ebcdic_execution_charset::on_diagnostic): ...this,
	converting level and reason to enums.
	(class selftest::lexer_error_sink): Rename to...
	(class selftest::lexer_test_options): ...this, renaming field
	"m_errors" to "m_diagnostics".
	(selftest::lexer_test_options::apply): Update for renaming of...
	(selftest::lexer_test_options::on_error): ...this, renaming to...
	(selftest::lexer_test_options::on_diagnostic): ...this
	converting level and reason to enums.
	(selftest::test_lexer_string_locations_raw_string_unterminated):
	Update for renamings.
	* opth-gen.awk (struct cpp_reason_option_codes_t): Use enum for
	"reason".

libcpp/ChangeLog:
	* charset.c (noop_error_cb): Rename to...
	(noop_diagnostic_cb): ...this, converting params to enums.
	(cpp_interpret_string_ranges): Update for renaming and enums.
	* directives.c (check_eol_1): Convert reason to enum.
	(do_diagnostic): Convert code and reason to enum.
	(do_error): Use CPP_W_NONE rather than 0.
	(do_pragma_dependency): Likewise.
	* errors.c (cpp_diagnostic_at): Convert level and reason to enums.
	Update for renaming.
	(cpp_diagnostic): Convert level and reason to enums.
	(cpp_error): Convert level to enum.
	(cpp_warning): Convert reason to enums.
	(cpp_pedwarning): Likewise.
	(cpp_warning_syshdr): Likewise.
	(cpp_diagnostic_with_line): Convert level and reason to enums.
	Update for renaming.
	(cpp_error_with_line): Convert level to enum.
	(cpp_warning_with_line): Convert reason to enums.
	(cpp_pedwarning_with_line): Likewise.
	(cpp_warning_with_line_syshdr): Likewise.
	(cpp_error_at): Convert level to enum.
	(cpp_errno): Likewise.
	(cpp_errno_filename): Likewise.
	* include/cpplib.h (enum cpp_diagnostic_level): Name this enum,
	and move to before struct cpp_callbacks.
	(enum cpp_warning_reason): Likewise.
	(cpp_callbacks::diagnostic): Convert params from int to enums.
	(cpp_error): Convert int param to enum cpp_diagnostic_level.
	(cpp_warning): Convert int param to enum cpp_warning_reason.
	(cpp_pedwarning): Likewise.
	(cpp_warning_syshdr): Likewise.
	(cpp_errno): Convert int param to enum cpp_diagnostic_level.
	(cpp_errno_filename): Likewise.
	(cpp_error_with_line): Likewise.
	(cpp_warning_with_line): Convert int param to enum
	cpp_warning_reason.
	(cpp_pedwarning_with_line): Likewise.
	(cpp_warning_with_line_syshdr): Likewise.
	(cpp_error_at): Convert int param to enum cpp_diagnostic_level.
	* macro.c (create_iso_definition): Convert int to enum.
	(_cpp_create_definition): Likewise.

From-SVN: r264999
2018-10-09 23:37:19 +00:00
Paolo Carlini 5abdb369eb re PR c++/84423 ([concepts] ICE with invalid using declaration)
/cp
2018-10-09  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84423
	* pt.c (convert_template_argument): Immediately return error_mark_node
	if the second argument is erroneous.
	* parser.c (cp_parser_type_id): Add location_t * parameter.
	(cp_parser_type_id_1): Likewise.
	(cp_parser_alias_declaration): Adjust cp_parser_type_id call,
	obtain the location of the type and save it.
	(cp_parser_template_type_arg): Adjust.
	(cp_parser_trailing_type_id): Likewise.
	* decl.c (grokdeclarator): Improve error message for 'auto' in
	alias declaration.

/testsuite
2018-10-09  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84423
	* g++.dg/concepts/pr84423-1.C: New.
	* g++.dg/concepts/pr84423-2.C: Likewise.
	* g++.dg/cpp0x/auto39.C: Test location too.
	* g++.dg/cpp0x/auto9.C: Likewise.
	* g++.dg/cpp1y/pr60384.C: Likewise.

From-SVN: r264996
2018-10-09 21:16:09 +00:00
François Dumont 2f039722d0 2018-10-09 François Dumont <fdumont@gcc.gnu.org>
* include/bits/stl_list.h
	(_List_operator<>::operator==): Replace member function with inline
	friend.
	(_List_operator<>::operator!=): Likewise.
	(_List_const_operator<>::operator==): Likewise.
	(_List_const_operator<>::operator!=): Likewise.
	(operator==(const _List_iterator<>&, const _List_const_iterator<>&)):
	Remove.
	(operator!=(const _List_iterator<>&, const _List_const_iterator<>&)):
	Remove.

From-SVN: r264993
2018-10-09 20:38:06 +00:00
Paul A. Clarke 6cb877be49 This is part 2/2 for contributing PPC64LE support for X86 SSE3 instrisics.
This is part 2/2 for contributing PPC64LE support for X86 SSE3
instrisics. This patch includes testsuite/gcc.target tests for the
intrinsics defined in pmmintrin.h. 

Tested on POWER8 ppc64le and ppc64 (-m64 and -m32, the latter only reporting
10 new unsupported tests.)

[gcc/testsuite]

2018-10-09  Paul A. Clarke  <pc@us.ibm.com>

	* gcc.target/powerpc/sse3-check.h: New file.
	* gcc.target/powerpc/sse3-addsubps.c: New file.
	* gcc.target/powerpc/sse3-addsubpd.c: New file.
	* gcc.target/powerpc/sse3-haddps.c: New file.
	* gcc.target/powerpc/sse3-hsubps.c: New file.
	* gcc.target/powerpc/sse3-haddpd.c: New file.
	* gcc.target/powerpc/sse3-hsubpd.c: New file.
	* gcc.target/powerpc/sse3-lddqu.c: New file.
	* gcc.target/powerpc/sse3-movsldup.c: New file.
	* gcc.target/powerpc/sse3-movshdup.c: New file.
	* gcc.target/powerpc/sse3-movddup.c: New file.
	* gcc.target/powerpc/pr37191.c: New file.

From-SVN: r264992
2018-10-09 20:31:52 +00:00
Paul A. Clarke 1fb0f8924f This is a follow-on to earlier commits for adding compatibility implementations of x86 intrinsics for PPC64LE.
This is a follow-on to earlier commits for adding compatibility
implementations of x86 intrinsics for PPC64LE.  This is the first of
two patches.  This patch adds 11 of the 13 x86 intrinsics from
<pmmintrin.h> ("SSE3").  (Patch 2/2 adds tests for these intrinsics,
and briefly describes the tests performed.)

Implementations are relatively straightforward, with occasional
extra effort for vector element ordering.

Not implemented are _mm_wait and _mm_monitor, as there are no
direct or trivial analogs in the POWER ISA.

./gcc/ChangeLog:
2018-10-05  Paul A. Clarke  <pc@us.ibm.com>

	* config.gcc (powerpc*-*-*): Add pmmintrin.h to extra_headers.
	* config/rs6000/pmmintrin.h: New file.

From-SVN: r264991
2018-10-09 20:25:57 +00:00
Tobias Burnus af2d2d135a re PR fortran/83522 (ICE on allocatable string reference, string(:)(:))
2018-10-09  Tobias Burnus <burnus@net-b.de>

	PR fortran/83522
	* resolve.c (resolve_ref): Reject nonscalar
	substring references.

        PR fortran/83522
	* gfortran.dg/actual_array_substr_1.f90: Add dg-error,
	change to dg-do compile.
	* gfortran.dg/actual_array_substr_2.f90: Ditto.
	* gfortran.dg/array_initializer_1.f90: Use array
	element not size-one section.
	* gfortran.dg/array_substring.f90: New.

From-SVN: r264990
2018-10-09 20:03:31 +02:00
Eric Botcazou 6fd8679fce re PR tree-optimization/86659 (gnat.dg/sso/q[23].adb FAIL)
PR tree-optimization/86659
	* gimple-match.h (gimple_match_op constructors): Initialize reverse.

From-SVN: r264986
2018-10-09 17:16:24 +00:00
Ian Lance Taylor 91b01194c9 runtime: skip testSetPanicOnFault for gollvm
LLVM doesn't support non-call exception. This test was passing
    more or less by luck: if the faulting instruction is between two
    calls with the same landing pad (in instruction layout order,
    not the program's logic order), it generates a merged PC range
    that covers the faulting instruction. If the instruction layout
    order changes, or it uses two different (but may be degenerate)
    landing pads, this doesn't work.
    
    Reviewed-on: https://go-review.googlesource.com/c/140517

From-SVN: r264985
2018-10-09 16:51:10 +00:00
Eric Botcazou c743425fce [Ada] Fix spurious -Wuninitialized warnings for small records
This change is aimed at getting rid of spurious -Wuninitialized warnings
issued for small records passed by copy and containing default values
for some of their components.

The source of the problem is that the _Init parameter of the
initialization routine is declared as an in/out parameter, so the
uninitialized object is passed by copy to it and this can be flagged by
-Wuninitialized.

That's why the mode of the parameter is changed to out, except for the
cases where information really needs to be passed in: unconstrained
array types, protected and task types.

For the following record type Rec!

 type Rec is record
    B : Boolean := True;
  end record;

the initialization routine must now be:

      procedure r__recIP (_init : out r__rec1) is
      begin
         _init.b := true;
         return;
      end r__recIP;

2018-10-09  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_ch3.adb (Is_Null_Statement_List): New predicate.
	(Build_Array_Init_Proc): Use it to find out whether the
	initialization procedure Is_Null_Init_Proc; if so, set
	Warnings_Off on the parameter.
	(Build_Init_Procedure): Likewise.
	(Init_Formals): Use an in/out first parameter only for
	unconstrained arrays and for records either containing or built
	for proteced types or task types; use an out parameter in all
	the other cases.
	* fe.h (Is_Init_Proc): Declare.
	* gcc-interface/decl.c (type_requires_init_of_formal): Do not
	return true for a discriminant in an unchecked union.
	(gnat_to_gnu_param): Do not create a PARM_DECL for the Out
	parameter of an initialization procedure.

From-SVN: r264984
2018-10-09 15:06:55 +00:00
Eric Botcazou 4b9e1bc781 [Ada] Fix incorrect computation of Component_Size in ASIS mode
2018-10-09  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: If
	this is not a definition, retrieve the expression in all cases
	even if we are just annotating types.
	* gcc-interface/trans.c (gnat_to_gnu): Also translate Size
	attribute for constrained types in this mode.

From-SVN: r264983
2018-10-09 15:06:50 +00:00
Eric Botcazou 005f870e91 [Ada] Minor tweaks to suppress warnings
2018-10-09  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* adaint.c (__gnat_get_executable_suffix_ptr): Add new line.
	(__gnat_locate_exec): Check that HOST_EXECUTABLE_SUFFIX is not
	empty before doing a string search for it.
	* socket.c (ATTRIBUTE_UNUSED): Define.
	(__gnat_disable_sigpipe): Add ATTRIBUTE_UNUSED on parameter.
	* terminals.c (ATTRIBUTE_UNUSED): Move around.
	(__gnat_setup_child_communication): Add ATTRIBUTE_UNUSED on
	parameter.
	(__gnat_send_header): Add ATTRIBUTE_UNUSED on parameters.

From-SVN: r264982
2018-10-09 15:06:46 +00:00
Yannick Moy ea891b439e [Ada] Ignore pragmas Compile_Time_Error/Warning in GNATprove mode
GNATprove does not have sometimes the precise information of the
compiler about size of types and objects, so that it cannot evaluate the
expressions in pragma Compile_Time_Error/Warning the same way the
compiler does.  Thus, these pragmas should be ignored in GNATprove mode,
as it can neither verify them nor assume them (if the expression cannot
be evaluated at compile time, then the semantics for GNAT is to ignore
them).

2018-10-09  Yannick Moy  <moy@adacore.com>

gcc/ada/

	* sem_prag.adb (Process_Compile_Time_Warning_Or_Error): Rewrite
	pragmas as null statements in GNATprove mode.

From-SVN: r264981
2018-10-09 15:06:41 +00:00
Eric Botcazou e693ddbec3 [Ada] Fix spurious error on derived record passed as Out parameter
This fixlet gets rid of a spurious error issued in the specific case of
a call to a subprogram taking an Out parameter of a discriminated record
type without default discriminants, if the actual parameter is the
result of the conversion to the record type of a variable whose type is
derived from the record and has a representation clause.

The compiler was failing to initialize the temporary made around the
call because of the representation clause, but this is required for a
type with discriminants because discriminants may be read by the called
subprogram.

2018-10-09  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_ch6.adb (Add_Call_By_Copy_Code): Initialize the temporary
	made for an Out parameter if the formal type has discriminants.

gcc/testsuite/

	* gnat.dg/derived_type5.adb, gnat.dg/derived_type5_pkg.ads: New
	testcase.

From-SVN: r264980
2018-10-09 15:06:35 +00:00
Maroua Maalej 38c2f655ff [Ada] SPARK: fix bug related to non access object permissions
2018-10-09  Maroua Maalej  <maalej@adacore.com>

gcc/ada/

	* sem_spark.adb (Check_Declaration): fix bug related to non
	access object permissions.

From-SVN: r264979
2018-10-09 15:06:30 +00:00
Doug Rupp 827845b829 [Ada] Minor copyright header fix
2018-10-09  Doug Rupp  <rupp@adacore.com>

gcc/ada/

	* libgnat/a-ncelfu.ads: Fix name in header to match package.

From-SVN: r264978
2018-10-09 15:06:26 +00:00
Eric Botcazou 865234bf36 [Ada] Fix strange warning when using Ada.Iterator_Interface
The back-end was recently changed to issue more -Wuninitialized warnings
on Out parameters and this has caught a case related to
Ada.Iterator_Interface.: This patchlet simply kills this uninteresting
warning.

2018-10-09  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_disp.adb (Make_Disp_Asynchronous_Select_Spec): Set
	Warnings_Off on the B out parameter.

gcc/testsuite/

	* gnat.dg/warn17.adb: New testcase.

From-SVN: r264977
2018-10-09 15:06:21 +00:00
Eric Botcazou fd40a157ba [Ada] Einfo: minor comment fix
2018-10-09  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* einfo.ads: Small comment fix.

From-SVN: r264976
2018-10-09 15:06:16 +00:00
Eric Botcazou 0444d0671d [Ada] Internal error on inlined renaming of subprogram instance
This fixes a recent regression introduced in the compiler for the
inlined renaming of a subprogram instantiated in a package body.  It was
wrongly clearing the Is_Public flag on the entity associated with the
body.

2018-10-09  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* sem_ch7.adb (Has_Referencer): Add comment for the
	N_Freeze_Entity case.  Do not rely on
	Has_Referencer_Of_Non_Subprograms to clear the Is_Public flag on
	subprogram entities.

gcc/testsuite/

	* gnat.dg/inline14.adb, gnat.dg/inline14_pkg.adb,
	gnat.dg/inline14_pkg.ads: New testcase.

From-SVN: r264975
2018-10-09 15:06:11 +00:00
Ed Schonberg c14bd5028a [Ada] Unnesting: fix handling of private types that are synchronized
2018-10-09  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_unst.adb (In_Synchronized_Call): Handle properly private
	types whose full views are synchronized types, in order to
	recognize generated subprograms whose bodies must be considered
	reachable even if no direct calls to them are visible in the
	source.

From-SVN: r264974
2018-10-09 15:06:05 +00:00
Ed Schonberg 184d0451c4 [Ada] Fix expansion of operations on nonbinary modular types
2018-10-09  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_ch4.adb (Expand_Modular_Op): When expanding an operation
	on nonbinary modular types, convert the opersnds to an integer
	type that is large enough to hold the modulus of the type, which
	may be larger than Integer'Last.

From-SVN: r264973
2018-10-09 15:05:59 +00:00
Ed Schonberg 9e25affdbd [Ada] Unnesting: fix handling of uplevel refs to unconstrained formals
2018-10-09  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_unst.adb (Unnest_Subprogram):  When an uplevel reference
	is to an unconstrained formal, the 'Access reference that is
	created to initialize the corresponding component of the
	activation record must be wrapped in an unchecked conversion to
	the generated type of the component. Otherwise, spurious suvtype
	conformance errors will be generated when the code is within an
	instantiation and the type of the formal is a formal type of the
	enclosing generic. Note that during unnesting there is no simple
	way to determine that the code appears within an instance
	because ther is no scope stack.

From-SVN: r264972
2018-10-09 15:05:54 +00:00
Eric Botcazou 8dcefdc003 [Ada] Remove spurious -Wuninitialized warning for small array at -O2
2018-10-09  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* gcc-interface/decl.c (type_requires_init_of_formal): New
	predicate.
	(gnat_to_gnu_param): Use it to determine whether a PARM_DECL
	must be created for an Out parameter passed by copy.

From-SVN: r264971
2018-10-09 15:05:49 +00:00
Arnaud Charlet da5f6eb46b [Ada] Bounded_Holders: fix a typo
2018-10-09  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* libgnat/a-coboho.ads (Storage_Element): Fix a typo.

From-SVN: r264970
2018-10-09 15:05:44 +00:00
Claire Dross ead467895d [Ada] Functional_Vectors: remove default value for max size
2018-10-09  Claire Dross  <dross@adacore.com>

gcc/ada/

	* libgnat/a-cfinve.ads: Remove default value for
	Max_Size_In_Storage_Elements as it was not supported in SPARK.

From-SVN: r264969
2018-10-09 15:05:39 +00:00
Ed Schonberg 8f0303e751 [Ada] Reset Is_True_Constant on entites used as OUT/IN OUT actuals
2018-10-09  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_ch6.adb (Add_Call_By_Copy_Node,
	Add_Simple_Call_By_Copy_Node, Expand_Call_Helper): Reset
	Is_True_Constant on entities used as Out or In_Out parameters in
	calls.

From-SVN: r264968
2018-10-09 15:05:34 +00:00
Ed Schonberg 73efc7ff4c [Ada] Unnesting: avoid unnecessary loads of System
2018-10-09  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_unst.adb (Unnest_Subprogram): Do not load System to obtain
	the Address entity unless an activation record is being built.
	Removes useless with_clauses for System when nested subprograms
	do not have uplevel references, and therefore do not need
	activation records.

From-SVN: r264967
2018-10-09 15:05:29 +00:00
Ed Schonberg e7e72f9b7a [Ada] Spurious error message on visibiliy change in aspect expression
This patch removes an improper error message on a visibility change in
an aspect expression between the freeze point and the end of the
declaration list, when the expression involves a call to a instance of
Unchecked_Conversion and the enclosing package declaration has a package
body with multiple subprogram bodies.

The following must compile quietly:

----
package body Par.Rep is
   procedure Nothing is begin null; end;
   procedure Rien is begin null; end;
end;
----
with Par.Loc;
package Par.Rep is
   type Rec is record
      X, Y : Integer;
   end record
      with Volatile;

   Thing2 : Unsigned_32 := 15;
   Thing3 : Rec
    with Volatile, Address => To_Address (Par.Loc.Flash_Base);
    procedure Nothing;
end;
----
pragma Restrictions (No_Elaboration_Code);
with interfaces;  use interfaces;
pragma unreferenced (interfaces);
with Tp;       use Tp;
pragma unreferenced (Tp);
package Par is
end Par;
----
with Ada.Unchecked_Conversion;
with System;
with Interfaces; use Interfaces;
package Tp is
subtype system_address is unsigned_32;
   function to_address is new
      ada.unchecked_conversion (system_address, system.address);
   function To_32 is new
      ada.unchecked_conversion (System.Address, System_Address);
end;
----
with TP; use TP;
package Par.Loc is
FLASH_BASE        : constant system_address := 16#0800_0000#;
end;

2018-10-09  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_ch6.adb (Fully_Conformant_Expressions): Handle properly
	the conformance check on an aspect expression that includes a
	call to an instance of Unchecked_Conversion, or more generally a
	call to an intrinsic operation.

From-SVN: r264966
2018-10-09 15:05:24 +00:00
Eric Botcazou 96d268c284 [Ada] Repinfo: list the mechanism of functions only
2018-10-09  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* repinfo.adb: Remove with/use clause for Stand.
	(List_Mechanisms): List the mechanism of functions only.

From-SVN: r264965
2018-10-09 15:05:19 +00:00
Bob Duff 98ebcae861 [Ada] Various User Manual updates for GNATpp
2018-10-09  Bob Duff  <duff@adacore.com>

gcc/ada/

	* doc/gnat_ugn/gnat_utility_programs.rst: Correct spelling of
	--eol switch.  Document the language-version switches.  Update
	description for --no-exception.

From-SVN: r264964
2018-10-09 15:05:14 +00:00
Vasiliy Fofanov 9aa47367b3 [Ada] System.Os_Lib.Normalize_Pathname: fix incorrect comment
2018-10-09  Vasiliy Fofanov  <fofanov@adacore.com>

gcc/ada/

	* libgnat/s-os_lib.ads (Normalize_Pathname): Fix incorrect
	comment.

From-SVN: r264963
2018-10-09 15:05:09 +00:00
Arnaud Charlet 0960ddad82 [Ada] Remove CodePeer annotation
2018-10-09  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* vxlink.adb: Remove pragma Annotate, no longer needed.

From-SVN: r264962
2018-10-09 15:05:04 +00:00
Ed Schonberg 94a98e801a [Ada] Preserve Do_Range_Check flags in SPARK mode
2018-10-09  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* checks.adb (Apply_Type_Conversion_Checks): Use GNATprove_Mode
	rather than SPARK_mode in order to preserve the Do_Range_Check
	flag for verification purposes.

From-SVN: r264961
2018-10-09 15:04:58 +00:00