1. 11 Oct, 2018 17 commits
    • [AArch64] Fix PR87511 · 1b6acf23
      As mentioned in PR87511, the shift used in aarch64_mask_and_shift_for_ubfiz_p
      should be evaluated as a HOST_WIDE_INT rather than int.
      
      Passes bootstrap & regress.
      
          gcc/
      	PR target/87511
      	* config/aarch64/aarch64.c (aarch64_mask_and_shift_for_ubfiz_p):
      	Use HOST_WIDE_INT_1U for shift.
      
          testsuite/
      	PR target/87511
      	* gcc.target/aarch64/pr87511.c: Add new test.
      
      From-SVN: r265058
      Wilco Dijkstra committed
    • C++: suggestions for misspelled private members (PR c++/84993) · 03f6d32e
      PR c++/84993 identifies a problem with our suggestions for
      misspelled member names in the C++ FE for the case where the
      member is private.
      
      For example, given:
      
      class foo
      {
      public:
        double get_ratio() const { return m_ratio; }
      
      private:
        double m_ratio;
      };
      
      void test(foo *ptr)
      {
        if (ptr->ratio >= 0.5)
          ;// etc
      }
      
      ...we currently emit this suggestion:
      
      <source>: In function 'void test(foo*)':
      <source>:12:12: error: 'class foo' has no member named 'ratio'; did you mean 'm_ratio'?
         if (ptr->ratio >= 0.5)
                  ^~~~~
                  m_ratio
      
      ...but if the user follows this suggestion, they get:
      
      <source>: In function 'void test(foo*)':
      <source>:12:12: error: 'double foo::m_ratio' is private within this context
         if (ptr->m_ratio >= 0.5)
                  ^~~~~~~
      <source>:7:10: note: declared private here
         double m_ratio;
                ^~~~~~~
      <source>:12:12: note: field 'double foo::m_ratio' can be accessed via 'double foo::get_ratio() const'
         if (ptr->m_ratio >= 0.5)
                  ^~~~~~~
                  get_ratio()
      
      It feels wrong to be emitting a fix-it hint that doesn't compile, so this
      patch adds the accessor fix-it hint logic to this case, so that we directly
      offer a valid suggestion:
      
      <source>: In function 'void test(foo*)':
      <source>:12:12: error: 'class foo' has no member named 'ratio'; did you mean
      'double foo::m_ratio'? (accessible via 'double foo::get_ratio() const')
         if (ptr->ratio >= 0.5)
                  ^~~~~
                  get_ratio()
      
      gcc/cp/ChangeLog:
      	PR c++/84993
      	* call.c (enforce_access): Move diagnostics to...
      	(complain_about_access): ...this new function.
      	* cp-tree.h (class access_failure_info): Rename split out field
      	"m_field_decl" into "m_decl" and "m_diag_decl".
      	(access_failure_info::record_access_failure): Add tree param.
      	(access_failure_info::was_inaccessible_p): New accessor.
      	(access_failure_info::get_decl): New accessor.
      	(access_failure_info::get_diag_decl): New accessor.
      	(access_failure_info::get_any_accessor): New member function.
      	(access_failure_info::add_fixit_hint): New static member function.
      	(complain_about_access): New decl.
      	* typeck.c (access_failure_info::record_access_failure): Update
      	for change to fields.
      	(access_failure_info::maybe_suggest_accessor): Split out into...
      	(access_failure_info::get_any_accessor): ...this new function...
      	(access_failure_info::add_fixit_hint): ...and this new function.
      	(finish_class_member_access_expr): Split out "has no member named"
      	error-handling into...
      	(complain_about_unrecognized_member): ...this new function, and
      	check that the guessed name is accessible along the access path.
      	Only provide a spell-correction fix-it hint if it is; otherwise,
      	attempt to issue an accessor fix-it hint.
      
      gcc/testsuite/ChangeLog:
      	PR c++/84993
      	* g++.dg/torture/accessor-fixits-9.C: New test.
      
      From-SVN: r265056
      David Malcolm committed
    • [C++ PATCH] parser simplification · c7f45560
      https://gcc.gnu.org/ml/gcc-patches/2018-10/msg00689.html
      	cp/
      	* parser.c (cp_parser_translation_unit): Return void.  Don't fail
      	at first extra }, simplify logic.
      	(c_parse_file): Call finish_translation_unit here.
      
      	testsuite/
      	* g++.dg/parse/close-brace.C: New.
      	* g++.dg/cpp0x/noexcept16.C: Avoid warning.
      	* g++.old-deja/g++.other/crash32.C: Add another error
      
      From-SVN: r265055
      Nathan Sidwell committed
    • leverage linker relaxation on ppc vxworks RTPs · 13c4e403
      2018-10-11  Doug Rupp  <rupp@adacore.com>
                  Olivier Hainque  <hainque@adacore.com>
      
              * config/rs6000/vxworks.h (VXWORKS_RELAX_LINK_SPEC): New macro.
              Pass --relax to the linker for RTPs.
              (LINK_SPEC): Append VXWORKS_RELAX_LINK_SPEC.
      
      Co-Authored-By: Olivier Hainque <hainque@adacore.com>
      
      From-SVN: r265054
      Doug Rupp committed
    • re PR c++/85070 (ICE on C++ code: in lazily_declare_fn, at cp/method.c:2409) · 1cc6eecd
      	PR c++/85070
      	* g++.dg/cpp0x/pr85070.C: Change effective target for diagnostics from
      	c++14_only to c++14.
      
      From-SVN: r265052
      Jakub Jelinek committed
    • multiline.exp: complain about mismatched dg-{begin|end}-multiline-output · cbd8652b
      Mismatched dg-{begin|end}-multiline-output directives are currently
      silently ignored, leading to difficult-to-diagnose test failures
      involving excess output.
      
      This patch makes multiline.exp complain about them.
      
      gcc/testsuite/ChangeLog:
      	* lib/multiline.exp (dg-begin-multiline-output): Issue an error if
      	there hasn't been a dg-end-multiline-output since the last
      	dg-begin-multiline-output.
      	(dg-end-multiline-output): Issue an error if there hasn't been a
      	dg-begin-multiline-output.  Reset _multiline_last_beginning_line
      	as soon possible.  Rename "line" to "last_line".
      
      From-SVN: r265046
      David Malcolm committed
    • PR libstdc++/80538 Only call sleep for non-zero values · cfef4c32
      Avoid a system call when no sleep is required. Sleep in a loop (actually
      two loops) to handle interruption by signals.
      
      	PR libstdc++/80538
      	* src/c++11/thread.cc (this_thread::__sleep_for)
      	[_GLIBCXX_HAVE_SLEEP]: Only call sleep for non-zero values.
      	Loop while sleep call is interrupted and until steady_clock
      	shows requested duration has elapsed.
      	(!_GLIBCXX_HAVE_USLEEP]: Use the _GLIBCXX_HAVE_SLEEP code path, but
      	avoiding the usleep call.
      	* testsuite/30_threads/this_thread/60421.cc: Test repeated
      	signal interruptions.
      
      From-SVN: r265044
      Jonathan Wakely committed
    • Elide repeated RTL elements. · 2045ae1d
      GCN's 64-lane vectors tend to make RTL dumps very long.  This patch makes them
      far more bearable by eliding long sequences of the same element into "repeated"
      messages.
      
      This also takes care of reading repeated sequences in the RTL front-end.
      
      There are self tests for both reading and writing.
      
      2018-10-11  Andrew Stubbs  <ams@codesourcery.com>
      	    Jan Hubicka  <jh@suse.cz>
      	    Martin Jambor  <mjambor@suse.cz>
      
      	gcc/
      	* print-rtl.c (print_rtx_operand_codes_E_and_V): Print how many times
      	the same elements are repeated rather than printing all of them.
      	* read-rtl.c (rtx_reader::read_rtx_operand): Recognize and expand
      	"repeated" elements.
      	* read-rtl-function.c (test_loading_repeat): New function.
      	(read_rtl_function_c_tests): Call test_loading_repeat.
      	* rtl-tests.c (test_dumping_repeat): New function.
      	(rtl_tests_c_tests): Call test_dumping_repeat.
      
      	gcc/testsuite/
      	* selftests/repeat.rtl: New file.
      
      Co-Authored-By: Jan Hubicka <jh@suse.cz>
      Co-Authored-By: Martin Jambor <mjambor@suse.cz>
      
      From-SVN: r265042
      Andrew Stubbs committed
    • re PR c++/87582 (Returning a reference to a data member via structured bindings dangles) · f9f3b77c
      	PR c++/87582
      	* typeck.c (maybe_warn_about_returning_address_of_local): If
      	whats_returned is a structured binding identifier and the structured
      	binding is a reference, recurse on its initializer.
      
      	* g++.dg/cpp1z/decomp48.C: New test.
      
      From-SVN: r265041
      Jakub Jelinek committed
    • libcpp: show macro definition when used with wrong argument count · 954ad112
      Consider:
      
      demo.c: In function 'test':
      demo.c:5:40: error: macro "LOG_2" requires 3 arguments, but only 2 given
      5 |   LOG_2 ("loading file: %s\n", filename);
        |                                        ^
      
      This patch adds a note showing the definition of the macro in
      question, giving:
      
      demo.c: In function 'test':
      demo.c:5:40: error: macro "LOG_2" requires 3 arguments, but only 2 given
      5 |   LOG_2 ("loading file: %s\n", filename);
        |                                        ^
      In file included from demo.c:1:
      logging.h:1: note: macro "LOG_2" defined here
      1 | #define LOG_2(FMT, ARG0, ARG1) do { fprintf (stderr, (FMT), (ARG0), (ARG1)); }
        | 
      
      gcc/testsuite/ChangeLog:
      	* g++.dg/diagnostic/macro-arg-count.C: Move to...
      	* c-c++-common/cpp/macro-arg-count-1.c: ...here, generalizing
      	output for C vs C++.  Expect notes showing the definitions of the
      	macros.
      	* c-c++-common/cpp/macro-arg-count-2.c: New test, adapted from the
      	above.
      
      libcpp/ChangeLog:
      	* macro.c (_cpp_arguments_ok): If the argument count is wrong, add
      	a note showing the definition of the macro.
      
      From-SVN: r265040
      David Malcolm committed
    • x86-tune-costs.h (bdver?_memcpy, [...]): Unify to ... · c727b835
      2018-10-11  Richard Biener  <rguenther@suse.de>
      
      	* config/i386/x86-tune-costs.h (bdver?_memcpy, bdver?_memset,
      	bdver?_cost): Unify to ...
      	(bdver_memcpy, bdver_memset, bdver_cost): ... this.
      	* config/i386/i386.c (processor_cost_table): Adjust.
      
      From-SVN: r265038
      Richard Biener committed
    • [PATCH] A couple of line map fixes · c1b48b29
      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
      Nathan Sidwell committed
    • Make ext allocators support heterogeneous equality comparison · c7790bdb
      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
      Jonathan Wakely committed
    • [testsuite] Further fixes to warn-abs-1.c · e7336b8e
      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
      Martin Jambor committed
    • c-lex.c (c_common_has_attribute): Return 201803 instead of 20180312 for no_unique_address. · 46c62690
      	* 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
      Jakub Jelinek committed
    • re PR c++/87547 (G++ reports bad type names for bit-field members) · f7904392
      	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
      Jakub Jelinek committed
    • Daily bump. · 6b0649cb
      From-SVN: r265032
      GCC Administrator committed
  2. 10 Oct, 2018 12 commits
  3. 09 Oct, 2018 11 commits
    • Cleanup of libcpp diagnostic callbacks · c24300ba
      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
      David Malcolm committed
    • re PR c++/84423 ([concepts] ICE with invalid using declaration) · 5abdb369
      /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
      Paolo Carlini committed
    • 2018-10-09 François Dumont <fdumont@gcc.gnu.org> · 2f039722
      	* 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
      François Dumont committed
    • This is part 2/2 for contributing PPC64LE support for X86 SSE3 instrisics. · 6cb877be
      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
      Paul A. Clarke committed
    • This is a follow-on to earlier commits for adding compatibility implementations… · 1fb0f892
      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
      Paul A. Clarke committed
    • re PR fortran/83522 (ICE on allocatable string reference, string(:)(:)) · af2d2d13
      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
      Tobias Burnus committed
    • re PR tree-optimization/86659 (gnat.dg/sso/q[23].adb FAIL) · 6fd8679f
      	PR tree-optimization/86659
      	* gimple-match.h (gimple_match_op constructors): Initialize reverse.
      
      From-SVN: r264986
      Eric Botcazou committed
    • runtime: skip testSetPanicOnFault for gollvm · 91b01194
          
          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
      Ian Lance Taylor committed
    • [Ada] Fix spurious -Wuninitialized warnings for small records · c743425f
      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
      Eric Botcazou committed
    • [Ada] Fix incorrect computation of Component_Size in ASIS mode · 4b9e1bc7
      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
      Eric Botcazou committed
    • [Ada] Minor tweaks to suppress warnings · 005f870e
      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
      Eric Botcazou committed