1. 22 May, 2018 19 commits
    • [Ada] Ignore pragma Elaborate_Body in spec of a SAL_Interface package · 6b3035ab
      2018-05-22  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* binde.adb: (Choose): Ignore a pragma Elaborate_Body that appears in
      	the spec of a SAL_Interface package.
      
      From-SVN: r260517
      Bob Duff committed
    • [Ada] Spurious visibility error on aspect in generic unit · 85c73d63
      This patch fixes a spurious visiblity error on an instantiation of a generic
      package that contains a type declaration with an aspect specification for
      an aspect that must be delayed (i.e. an aspect whose value may be specified
      at a later point).
      
      The package g.ads must compile quietly:
      
      ----
      with S;
      generic
      package G
      is
         type Buffer_Type is record
            Data       : Integer;
         end record;
      
         package Buffer is new S (Buffer_Type => Buffer_Type);
      end G;
      ----
      generic
         type Buffer_Type is private;
      package S
      is
         Page_Size : constant := 4096;
      
         type Reader_Type is limited record
            Data   : Buffer_Type;
         end record
           with
              Alignment => Page_Size; -- Using a constant does not work
      --      Alignment => 4096;      -- Using a number works
      
      -- for Reader_Type'Alignment use Page_Size; -- so does an attribute.
         pragma Compile_Time_Error (Reader_Type'Size /= 12345, "Ooops");
         -- Note: We set 'Alignment and check for 'Size.
      end S;
      
      2018-05-22  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* freeze.adb (Freeze_Entity): When analyzing delayed aspects of an
      	entity E within a generic unit, indicate that there are no remaining
      	delayed aspects after invoking Analyze_Aspects_At_Freeze_Point. The
      	entity E is not frozen yet but the aspects should not be reanalyzed at
      	the freeze point, which may be outside of the generic and may not have
      	the proper visibility.
      
      From-SVN: r260516
      Ed Schonberg committed
    • [Ada] Document new switches for gnatpp · 71483539
      2018-05-22  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_ugn/gnat_utility_programs.rst: Add documentation for
      	the new --split-line-before-record, --indent-named-statements and
      	--no-align-modes gnatpp switches.
      
      From-SVN: r260515
      Bob Duff committed
    • [Ada] Crash on pragma Compile_Time_Warning with declared string constant · 531351e8
      This patch fixes a compiler abort on a pragma Compile_Time_Warning when its
      second argument is a reference to a constsant string (rather than a string
      literal or an expression that evaluates to a string literal).
      
      Compiling msain.adb must yield:
      
         main.adb:5:33: warning: Good
         main.adb:6:33: warning: VALLUE
         main.adb:7:33: warning: Test
      
      ----
      procedure Main is
         Value : constant String := "Test";
         Switch : constant Boolean := True;
      begin
         pragma Compile_Time_Warning (Switch, "Good");
         pragma Compile_Time_Warning (Switch, "VAL" & "LUE");
         pragma Compile_Time_Warning (Switch, value);
         null;
      end Main;
      
      2018-05-22  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_prag.adb (Process_Compile_Time_Warning_Or_Error): Handle properly
      	a second argument that is a constant of a given string value.
      
      From-SVN: r260514
      Ed Schonberg committed
    • [Ada] Align stack to 128bits on VxWorks for AArch64 · 9c629d61
      Real board requires fat alignment of stack.
      
      2018-05-22  Doug Rupp  <rupp@adacore.com>
      
      gcc/ada/
      
      	* sigtramp-vxworks-target.inc: Align stack to 128bits on AArch64.
      
      From-SVN: r260513
      Doug Rupp committed
    • [Ada] Fix stack alignment issue in the signal trampoline on QNX · 14141ce8
      The stack on AArch64 is 128-bit aligned to allow Neon and FPU operations.
      
      2018-05-22  Jerome Lambourg  <lambourg@adacore.com>
      
      gcc/ada/
      
      	* sigtramp-qnx.c: Fix stack alignment issue in the signal trampoline.
      
      From-SVN: r260512
      Jerome Lambourg committed
    • [Ada] Spurious size error on fixed point type with aspect Small · f2df0100
      This path fixes a spurious size error on a fixed point that carries an
      aspect specification for the 'Small of the type, when there is a subsequent
      derivation of that type before the type is frozen, the given 'Small is not
      not a power of two, and the bounds of the type require its full size, also
      given by an aspect specification.
      
      2018-05-22  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* freeze.adb (Freeze_Fixed_Point_Type): If the first subtype has
      	delayed aspects, analyze them now, os that the representation of the
      	type (size, bounds) can be computed and validated.
      
      gcc/testsuite/
      
      	* gnat.dg/fixedpnt3.adb: New testcase.
      
      From-SVN: r260511
      Ed Schonberg committed
    • [Ada] Prevent caching of non-text symbols for symbolic tracebacks · b8bbe739
      We now only have the executable code section boundaries at hand,
      so can only infer offsets for symbols within those boundaries.
      
      Symbols outside of this region are non-text symbols, pointless for
      traceback symbolization anyway.
      
      2018-05-22  Olivier Hainque  <hainque@adacore.com>
      
      gcc/ada/
      
      	* libgnat/s-dwalin.adb (Enable_Cache): Skip symbols outside of the
      	executable code section boundaries.
      
      From-SVN: r260510
      Olivier Hainque committed
    • [Ada] Adding support for Ada.Locales package · 92ea8dd2
      This patch adds generic support for the Ada.Locales package that
      relies on the setlocale() C service.
      
      2018-05-22  Javier Miranda  <miranda@adacore.com>
      
      gcc/ada/
      
      	* locales.c: New implementation for the Ada.Locales package.
      	* libgnat/a-locale.ads: Remove comment indicating that this is not
      	implemented.
      	* doc/gnat_rm/standard_library_routines.rst: Remove comment indicating
      	that this is not implemented.
      	* gnat_rm.texi: Regenerate.
      
      From-SVN: r260509
      Javier Miranda committed
    • [Ada] Minor reformattings · e5fc0179
      2018-05-22  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* exp_ch5.adb, freeze.adb, pprint.adb, sem_ch4.adb, sem_res.adb: Minor
      	reformattings.
      
      From-SVN: r260508
      Hristian Kirtchev committed
    • [Ada] No error on misplaced pragma Pure_Function · eaf51442
      This patch fixes an issue whereby placement of the pragma/aspect Pure_Function
      was not verified to have been in the same declarative part as the function
      declaration incorrectly allowing it to appear after a function body or in a
      different region like a private section.
      
      2018-05-22  Justin Squirek  <squirek@adacore.com>
      
      gcc/ada/
      
      	* sem_ch12.adb (In_Same_Declarative_Part): Moved to sem_util.
      	(Freeze_Subprogram_Body, Install_Body): Modify calls to
      	In_Same_Declarative_Part.
      	* sem_prag.adb (Analyze_Pragma-Pragma_Pure_Function): Add check to
      	verify pragma declaration is within the same declarative list with
      	corresponding error message.
      	* sem_util.adb, sem_util.ads (In_Same_Declarative_Part): Moved from
      	sem_ch12.adb and generalized to be useful outside the scope of
      	freezing.
      
      gcc/testsuite/
      
      	* gnat.dg/pure_function1.adb, gnat.dg/pure_function1.ads,
      	gnat.dg/pure_function2.adb, gnat.dg/pure_function2.ads: New testcases.
      
      From-SVN: r260507
      Justin Squirek committed
    • [Ada] Missing error on illegal categorization dependency · 80f0c69c
      This patch modifies the analysis of subprogram declarations to ensure that an
      aspect which is converted into a categorization pragma is properly taken into
      account when verifying the dependencies of a subprogram unit.
      
      ------------
      -- Source --
      ------------
      
      --  pack.ads
      
      package Pack is end Pack;
      
      --  proc1.ads
      
      with Pack;
      
      procedure Proc1 with Pure;
      
      --  proc2.ads
      
      with Pack;
      
      procedure Proc2;
      pragma Pure (Proc2);
      
      ----------------------------
      -- Compilation and output --
      ----------------------------
      
      $ gcc -c proc1.ads
      $ gcc -c proc2.ads
      proc1.ads:1:06: cannot depend on "Pack" (wrong categorization)
      proc1.ads:1:06: pure unit cannot depend on non-pure unit
      proc2.ads:1:06: cannot depend on "Pack" (wrong categorization)
      proc2.ads:1:06: pure unit cannot depend on non-pure unit
      
      2018-05-22  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* sem_ch6.adb (Analyze_Subprogram_Declaration): Set the proper
      	categorization of the unit after processing the aspects in case one of
      	its aspects is converted into a categorization pragma.
      
      From-SVN: r260506
      Hristian Kirtchev committed
    • Handle a null lhs in expand_direct_optab_fn (PR85862) · 440ed9f8
      This PR showed that the normal function for expanding directly-mapped
      internal functions didn't handle the case in which the call was only
      being kept for its side-effects.
      
      2018-05-22  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	PR middle-end/85862
      	* internal-fn.c (expand_direct_optab_fn): Cope with a null lhs.
      
      gcc/testsuite/
      	PR middle-end/85862
      	* gcc.dg/torture/pr85862.c: New test.
      
      From-SVN: r260504
      Richard Sandiford committed
    • re PR tree-optimization/85834 (ice in set_ssa_val_to, at tree-ssa-sccvn.c:3396) · 81d5198d
      2018-05-22  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/85834
      	* tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle
      	non-constant and non-zero memset arguments.
      
      	* g++.dg/torture/pr85834.C: New testcase.
      	* gcc.dg/tree-ssa/ssa-fre-64.c: Likewise.
      
      From-SVN: r260503
      Richard Biener committed
    • Do not ICE for incomplete types in ICF (PR ipa/85607). · a6df9d90
      2018-05-22  Martin Liska  <mliska@suse.cz>
      
      	PR ipa/85607
      	* ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types.
      2018-05-22  Martin Liska  <mliska@suse.cz>
      
      	PR ipa/85607
      	* g++.dg/ipa/pr85607.C: New test.
      
      From-SVN: r260502
      Martin Liska committed
    • re PR tree-optimization/85863 (ICE in compiling spec2006 fortran test case… · 4515e413
      re PR tree-optimization/85863 (ICE in compiling spec2006 fortran test case solib.fppized.f starting with r260283)
      
      2018-05-22  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/85863
      	* tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
      	comparisons when vectype is specified.
      	(vectorizable_condition): Do not specify vectype for
      	vect_is_simple_cond when SLP vectorizing.
      
      	* gfortran.fortran-torture/compile/pr85863.f: New testcase.
      
      From-SVN: r260501
      Richard Biener committed
    • * MAINTAINERS (loop-optimizer): Add myself. · c5470754
      From-SVN: r260500
      Bin Cheng committed
    • re PR fortran/85841 ([F2018] reject deleted features) · 286f737c
      2018-05-22  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/85841
      	* libgfortran.h: Remove the macros GFC_STD_F2008_TS and
      	GFC_STD_OPT_F08TS.
      	* error.c (notify_std_msg): Remove GFC_STD_F2008_TS.
      	* options.c (set_default_std_flags): Ditto.
      	(gfc_handle_option): Make -std=f2008ts an alias for -std=f2018.
      	* array.c (gfc_match_array_spec): Replace GFC_STD_F2008_TS by
      	GFC_STD_F2018.
      	* check.c (gfc_check_atomic, gfc_check_event_query,
      	gfc_check_c_f_pointer, gfc_check_c_f_procpointer, gfc_check_c_funloc,
      	gfc_check_c_loc, gfc_check_num_images, gfc_check_this_image): Ditto.
      	* decl.c (gfc_verify_c_interop_param, gfc_match_decl_type_spec): Ditto.
      	* intrinsic.c (add_functions, add_subroutines,
      	gfc_check_intrinsic_standard): Ditto.
      	* iso-c-binding.def: Ditto.
      	* iso-fortran-env.def: Ditto.
      	* match.c (gfc_match_event_post, gfc_match_event_wait,
      	gfc_match_fail_image, gfc_match_form_team, gfc_match_change_team,
      	gfc_match_end_team, gfc_match_sync_team): Ditto.
      	* gfortran.texi: Remove mention of -std=f2008ts.
      	Move TSs into F2018 section.
      	* invoke.texi: Update documentation of -std=f2008ts.
      
      
      2018-05-22  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/85841
      	* gfortran.dg/assumed_rank_5.f90: Update error message.
      	* gfortran.dg/assumed_type_4.f90: Ditto.
      	* gfortran.dg/bind_c_array_params.f03: Ditto.
      	* gfortran.dg/bind_c_usage_28.f90: Ditto.
      	* gfortran.dg/c_funloc_tests_5.f03: Ditto.
      	* gfortran.dg/c_funloc_tests_6.f90: Ditto.
      	* gfortran.dg/c_loc_tests_11.f03: Ditto.
      	* gfortran.dg/coarray_atomic_2.f90: Ditto.
      	* gfortran.dg/coarray_collectives_2.f90: Ditto.
      	* gfortran.dg/coarray_collectives_10.f90: Ditto.
      	* gfortran.dg/coarray_collectives_13.f90: Ditto.
      	* gfortran.dg/rank_3.f90: Ditto.
      	* gfortran.dg/error_stop_4.f90: Replace -std=f2008ts by -std=f2008.
      	* gfortran.dg/implicit_14.f90: Ditto.
      
      From-SVN: r260499
      Janus Weil committed
    • Daily bump. · 9687412c
      From-SVN: r260497
      GCC Administrator committed
  2. 21 May, 2018 21 commits
    • * es.po: Update. · fb235814
      From-SVN: r260492
      Joseph Myers committed
    • simd-5.c: Fix comment. · 7157e925
      2018-05-21  Christian Groessler  <chris@groessler.org>
      
      	* gcc.c-torture/compile/simd-5.c: Fix comment.
      
      From-SVN: r260491
      Christian Groessler committed
    • re PR target/85657 (Make __ibm128 a separate type, even if long double uses the… · c05fb645
      re PR target/85657 (Make __ibm128 a separate type, even if long double uses the IBM double-double format)
      
      2018-05-21  Michael Meissner  <meissner@linux.ibm.com>
      
      	PR target/85657
      	* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
      	define __ibm128 as long double.
      	* config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
      	as a distinct type with IEEE 128-bit floating point is supported.
      	(init_float128_ieee): Fix up conversions between IFmode and IEEE
      	128-bit types to use the correct functions.
      	(rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
      	convert between 128-bit floating point types that have different
      	modes but the same representation, instead of using gen_lowpart to
      	makean alias.
      	* config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
      	KFmode.
      	(IFKF_reg): New attributes to give the register constraints for
      	IFmode and KFmode.
      	(extend<mode>tf2_internal): New insns to mark an explicit
      	conversion between 128-bit floating point types that have a
      	different mode but share the same representation.
      
      [gcc/testsuite]
      2018-05-21  Michael Meissner  <meissner@linux.ibm.com>
      
      	PR target/85657
      	* gcc.target/powerpc/pr85657-1.c: New test for converting between
      	__float128, __ibm128, and long double.
      	* gcc.target/powerpc/pr85657-2.c: Likewise.
      	* gcc.target/powerpc/pr85657-3.c: Likewise.
      	* g++.dg/pr85667.C: New test to make sure __ibm128 is
      	implementated as a separate type internally, and is not just an
      	alias for long double.
      
      From-SVN: r260490
      Michael Meissner committed
    • re PR target/85657 (Make __ibm128 a separate type, even if long double uses the… · 75705fa9
      re PR target/85657 (Make __ibm128 a separate type, even if long double uses the IBM double-double format)
      
      [gcc]
      2018-05-21  Michael Meissner  <meissner@linux.ibm.com>
      
      	PR target/85657
      	* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
      	define __ibm128 as long double.
      	* config/rs6000/rs6000.c (rs6000_init_builtins): Always create
      	__ibm128 as a distinct type.
      	(init_float128_ieee): Fix up conversions between IFmode and IEEE
      	128-bit types to use the correct functions.
      	(rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
      	convert between 128-bit floating point types that have different
      	modes but the same representation, instead of using gen_lowpart to
      	makean alias.
      	* config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
      	KFmode.
      	(IFKF_reg): New attributes to give the register constraints for
      	IFmode and KFmode.
      	(extend<mode>tf2_internal): New insns to mark an explicit
      	conversion between 128-bit floating point types that have a
      	different mode but share the same representation.
      
      [gcc/testsuite]
      2018-05-21  Michael Meissner  <meissner@linux.ibm.com>
      
      	PR target/85657
      	* gcc.target/powerpc/pr85657-1.c: New test for converting between
      	__float128, __ibm128, and long double.
      	* gcc.target/powerpc/pr85657-2.c: Likewise.
      	* gcc.target/powerpc/pr85657-3.c: Likewise.
      	* g++.dg/pr85667.C: New test to make sure __ibm128 is
      	implementated as a separate type internally, and is not just an
      	alias for long double.
      
      From-SVN: r260489
      Michael Meissner committed
    • Fix tree-ssa-strlen handling of partial clobbers (PR85814) · 9c8c7338
      In this PR we have:
      
        c_5 = c_4(D) + 4;
        c_12 = c_5 + 1;
        *c_5 = 2;
        a = 2;		// A
        c_21 = c_12 + 1;
        *c_12 = 2;
        a = 2;		// B
        c_28 = c_21 + 1;
        *c_21 = 2;
        a = 2;
        c_7 = c_28 + 1;
        *c_28 = 2;
      
      where a is a global int.  We decide that A can't clobber *c_5 == c_4[4]
      because the latter implies that c_4 is an object of 5 bytes or more,
      whereas a has exactly 4 bytes.
      
      The assumption for B and *c_5 is the same, but when considering B and
      *c_12, we only follow the definition of c_12 to c_5 + 1 (for good
      reason) and so have *c_12 == c_5[1].  We then don't have the same
      size guarantee and so assume that B could clobber *c_12.  This leads
      to a situation in which the strinfo for c_5 is still valid but the
      next strinfo (c_12) isn't.  We then segfaulted while trying to get
      the strinfo for c_21 + 1 == c_5 + 3 because get_stridx_plus_constant
      assumed that c_5's next strinfo (c_12) would be valid too.
      
      And of course it should be valid really.  It doesn't make sense for the
      string based at c_5 to be valid but a substring of it to be invalid.
      I don't think we can guarantee that such weird corner cases never
      happen though, even if we tried to avoid this one.
      
      One possibility would be to mark c_12 as valid on the basis that c_5
      is valid, but I'm not sure the complication is worth it given that it
      seems to trigger very rarely.  A better optimisation would be to get
      the unroller to clean up after itself a bit more...
      
      Although this particular instance of the bug relies on r249880, I think
      we could have similar problems in GCC 7.  It would be much harder to
      trigger though, especially since it relies on unfolded IR like the above.
      
      2018-05-21  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	PR tree-optimization/85814
      	* tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
      	a null return from get_strinfo when unsharing the next
      	strinfo in the chain.
      
      gcc/testsuite/
      	PR tree-optimization/85814
      	* gcc.dg/torture/pr85814.c: New test.
      
      From-SVN: r260488
      Richard Sandiford committed
    • re PR fortran/85841 ([F2018] reject deleted features) · 4358400b
      2018-05-21  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/85841
      	PR testsuite/85865
      	* testsuite/libgomp.fortran/collapse2.f90: Add option "-std=legacy".
      	* testsuite/libgomp.fortran/omp_atomic2.f90: Ditto.
      	* testsuite/libgomp.fortran/omp_parse1.f90: Ditto.
      	* testsuite/libgomp.fortran/omp_parse3.f90: Ditto.
      	* testsuite/libgomp.fortran/task2.f90: Ditto.
      	* testsuite/libgomp.fortran/vla1.f90: Ditto.
      	* testsuite/libgomp.fortran/vla2.f90: Ditto.
      	* testsuite/libgomp.fortran/vla3.f90: Ditto.
      	* testsuite/libgomp.fortran/vla4.f90: Ditto.
      	* testsuite/libgomp.fortran/vla5.f90: Ditto.
      	* testsuite/libgomp.fortran/vla6.f90: Ditto.
      	* testsuite/libgomp.fortran/vla8.f90: Ditto.
      	* testsuite/libgomp.oacc-fortran/collapse-2.f90: Ditto.
      	* testsuite/libgomp.oacc-fortran/nested-function-1.f90: Ditto.
      
      From-SVN: r260487
      Janus Weil committed
    • parser.c (cp_parser_parameter_declaration_list): Remove bool* parameter. · 54c22d96
      2018-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* parser.c (cp_parser_parameter_declaration_list): Remove
      	bool* parameter.
      	(cp_parser_parameter_declaration_clause): Adjust.
      	(cp_parser_cache_defarg): Likewise.
      
      From-SVN: r260486
      Paolo Carlini committed
    • re PR target/84923 (gcc.dg/attr-weakref-1.c failed on aarch64) · a3c70819
              PR gcc/84923
              * varasm.c (weak_finish): Clean up weak_decls.
      
      From-SVN: r260485
      Vladimir Mezentsev committed
    • re PR c++/84588 (internal compiler error: Segmentation fault (contains_struct_check())) · 18759120
      /cp
      2018-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/84588
      	* parser.c (cp_parser_maybe_commit_to_declaration,
      	cp_parser_check_condition_declarator): New.
      	(cp_parser_simple_declaration): Use the first above.
      	(cp_parser_condition): Use both the above; enforce
      	[stmt.stmt]/2 about the declarator not specifying
      	a function or an array; improve error-recovery.
      
      /testsuite
      2018-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/84588
      	* g++.dg/cpp0x/cond1.C: New.
      	* g++.dg/cpp1y/pr84588-1.C: Likewise.
      	* g++.dg/cpp1y/pr84588-2.C: Likewise.
      	* g++.dg/cpp1y/pr84588-3.C: Likewise.
      	* g++.dg/parse/cond6.C: Likewise.
      	* g++.dg/parse/cond7.C: Likewise.
      	* g++.dg/parse/cond8.C: Likewise.
      	* g++.dg/cpp1z/decomp16.C: Update.
      	* g++.old-deja/g++.jason/cond.C: Likewise.
      
      From-SVN: r260482
      Paolo Carlini committed
    • ChangeLog for r260480 · b3229fe1
      2018-05-21  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	ChangeLog for r260480
              * gfortran.dg/graphite/block-2.f: Adjust testcase for new gfortran
              warnings for deleted and obsolescent features.
              * gfortran.dg/graphite/id-19.f: Ditto.
              * gfortran.dg/graphite/id-20.f: Ditto.
              * gfortran.dg/graphite/id-27.f90: Ditto.
              * gfortran.dg/graphite/pr82449.f: Ditto.
      
      From-SVN: r260481
      Steven G. Kargl committed
    • block-2.f: Adjust testcase for new gfortran warnings for deleted and obsolescent features. · ea81ff50
      2018-05-21  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	* gfortran.dg/graphite/block-2.f: Adjust testcase for new gfortran
         	warnings for deleted and obsolescent features.
      	* gfortran.dg/graphite/id-19.f: Ditto.
      	* gfortran.dg/graphite/id-20.f: Ditto.
      	* gfortran.dg/graphite/id-27.f90: Ditto.
      	* gfortran.dg/graphite/pr82449.f: Ditto.
      
      From-SVN: r260480
      Steven G. Kargl committed
    • Add support for opening file streams from wide character strings · b0292359
      C++17 added new overloads to <fstream> class templates to support
      opening files from wide character strings "on systems where
      filesystem::path::value_type is not char". This patch adds those
      overloads conditional on _wfopen being available, and enables them for
      pre-C++17 modes as well.
      
      	Add support for opening file streams from wide character strings.
      	* config/io/basic_file_stdio.cc [_GLIBCXX_HAVE__WFOPEN]
      	(__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
      	Define new overload.
      	* config/io/basic_file_stdio.h [_GLIBCXX_HAVE__WFOPEN]
      	(__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
      	Declare new overload.
      	* configure.ac: Check for _wfopen.
      	* crossconfig.m4: Likewise.
      	* configure: Regenerate.
      	* config.h.in: Regenerate.
      	* include/bits/fstream.tcc [_GLIBCXX_HAVE__WFOPEN]
      	(basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
      	Define new overload.
      	* include/std/fstream [_GLIBCXX_HAVE__WFOPEN]
      	(basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
      	Declare new overload.
      	[_GLIBCXX_HAVE__WFOPEN]
      	(basic_ifstream<C,T>::basic_ifstream(const wchar_t*, openmode))
      	(basic_ifstream<C,T>::basic_open(const wchar_t*, openmode))
      	(basic_ofstream<C,T>::basic_ifstream(const wchar_t*, openmode))
      	(basic_ofstream<C,T>::basic_open(const wchar_t*, openmode))
      	(basic_fstream<C,T>::basic_ifstream(const wchar_t*, openmode))
      	(basic_fstream<C,T>::basic_open(const wchar_t*, openmode)): Define
      	new overloads.
      	* testsuite/27_io/basic_filebuf/open/wchar_t/1.cc: New.
      	* testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: New.
      	* testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: New.
      	* testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: New.
      	* testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: New.
      	* testsuite/27_io/basic_fstream/cons/wchar_t/1.cc: New.
      	* testsuite/27_io/basic_fstream/open/wchar_t/1.cc: New.
      
      From-SVN: r260479
      Jonathan Wakely committed
    • re PR libstdc++/85845 (Many libstdc++ test failures) · 8b6d2d3b
      2018-05-21  François Dumont  <fdumont@gcc.gnu.org>
      
      	PR libstdc++/85845
      	* include/bits/stl_tree.h
      	(_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): Fix noexcept
      	qualification.
      
      From-SVN: r260478
      François Dumont committed
    • [AArch64][committed] Fix gcc.target/aarch64/vec_init_1.c for tiny and large mcmodels · a9221d82
      This recently-committed test fails the INS scan for tiny and large memory models.
      That is because instead of the:
      make_vector:
               adrp    x1, a
               adrp    x0, b
               movi    v0.4s, 0
               ldr     s2, [x1, #:lo12:a]
               ldr     s1, [x0, #:lo12:b]
               ins     v0.s[2], v2.s[0]
               ins     v0.s[3], v1.s[0]
               ret
      
      That we generate for the default small model, we end up with a simple register
      addressing mode with no addend/offset for the lane load:
      make_vector:
               movi    v0.4s, 0
               adr     x1, a
               adr     x0, b
               ld1     {v0.s}[2], [x1]
               ld1     {v0.s}[3], [x0]
               ret
      
      and
      
      make_vector:
               movi    v0.4s, 0
               adrp    x0, .LC0
               ldr     x1, [x0, #:lo12:.LC0]
               adrp    x0, .LC1
               ldr     x0, [x0, #:lo12:.LC1]
               ld1     {v0.s}[2], [x1]
               ld1     {v0.s}[3], [x0]
               ret
      
      So we end up merging the load and the lane insert.
      This patch adjusts the testcase to scan for the right thing accordingly.
      Checked that the testcase passes with -mcmodel=tiny, -mcmodel=small, -mcmodel=large.
      
      	* gcc.target/aarch64/vec_init_1.c: Scan for LD1 instead of INS for
      	tiny and large memory models.
      
      From-SVN: r260474
      Kyrylo Tkachov committed
    • Fix bogous dates in gcc/ada/ChangeLog · dc3d037e
      From-SVN: r260472
      Pierre-Marie de Rodat committed
    • [Ada] Spurious warning on object declaration with address clause · f9e9ab63
      The compiler warns on an object declaration with default initialization
      and an address clause, to indicate that the overlay implied by the address
      clause might affect a value elsewhere. The warning is suppressed if the type
      carries the Suppress_Initialization aspect. With this patch the compiler
      also inhibits the warning if the aspect is specified for the object itself.
      
      2018-05-21  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* freeze.adb (Warn_Overlay): Do not emit a wawrning on an object
      	declaration with an explicit address clause and a type with default
      	initialization, if the declaration carries an aspect
      	Suppress_Initialization.
      
      gcc/testsuite/
      
      	* gnat.dg/suppress_initialization.adb,
      	gnat.dg/suppress_initialization_pkg.ads: New testcase.
      
      From-SVN: r260471
      Ed Schonberg committed
    • [Ada] Pretty-print attribute names using mixed case · af5d8cb0
      2018-05-21  Daniel Mercier  <mercier@adacore.com>
      
      gcc/ada/
      
      	* pprint.adb: Use mixed case for attribute names.
      
      From-SVN: r260470
      Daniel Mercier committed
    • [Ada] Aspects on stubs · e9d08fd7
      This patch ensures that aspect specifications which appear on package,
      protected, and task body stubs are properly analyzed.
      
      ------------
      -- Source --
      ------------
      
      --  pack.ads
      
      package Pack
        with SPARK_Mode,
             Abstract_State => State
      is
         -------------------------------------
         -- Refined_Depends, Refined_Global --
         -------------------------------------
      
         procedure Proc_1;
         procedure Proc_2
           with Global  => (In_Out => State),
                Depends => (State  => State);
      
         task Task_Obj_1;
         task Task_Obj_2
           with Global  => (In_Out => State),
                Depends => (State  => State);
      
         ------------------
         -- Refined_Post --
         ------------------
      
         function Func_1 (Formal : Integer) return Integer;
         function Func_2 (Formal : Integer) return Integer
           with Post => Func_2'Result > Formal;
      
         -------------------
         -- Refined_State --
         -------------------
      
         package Pack_1 is end Pack_1;
         package Pack_2 with Abstract_State => State_2 is end Pack_2;
      
         ----------------
         -- SPARK_Mode --
         ----------------
      
         package Pack_3 with SPARK_Mode => Off is end Pack_3;
         package Pack_4 with SPARK_Mode => Off is end Pack_4;
         package Pack_5 is end Pack_5;
      
         protected type Prot_Typ_1 with SPARK_Mode => Off is end Prot_Typ_1;
         protected type Prot_Typ_2 with SPARK_Mode => Off is end Prot_Typ_2;
         protected type Prot_Typ_3 is end Prot_Typ_3;
      
         procedure Proc_3 with SPARK_Mode => Off;
         procedure Proc_4 with SPARK_Mode => Off;
         procedure Proc_5;
      
         task type Task_Typ_1 with SPARK_Mode => Off;
         task type Task_Typ_2 with SPARK_Mode => Off;
         task type Task_Typ_3;
      end Pack;
      
      --  pack.adb
      
      package body Pack
        with SPARK_Mode,
             Refined_State => (State => Constit)
      is
         Constit : Integer := 0;
      
         -------------------------------------
         -- Refined_Depends, Refined_Global --
         -------------------------------------
      
         procedure Proc_1 is separate
           with Refined_Global  => (In_Out  => Constit),                   --  Error
                Refined_Depends => (Constit => Constit);                   --  Error
      
         procedure Proc_2 is separate
           with Refined_Global  => (In_Out  => Constit),                   --  OK
                Refined_Depends => (Constit => Constit);                   --  OK
      
         task body Task_Obj_1 is separate
           with Refined_Global  => (In_Out  => Constit),                   --  Error
                Refined_Depends => (Constit => Constit);                   --  Error
      
         task body Task_Obj_2 is separate
           with Refined_Global  => (In_Out  => Constit),                   --  OK
                Refined_Depends => (Constit => Constit);                   --  OK
      
         ------------------
         -- Refined_Post --
         ------------------
      
         function Func_1 (Formal : Integer) return Integer is separate
           with Refined_Post => Func_1'Result > Formal;                    --  OK
      
         function Func_2 (Formal : Integer) return Integer is separate
           with Refined_Post => Func_2'Result > Formal;                    --  OK
      
         -------------------
         -- Refined_State --
         -------------------
      
         package body Pack_1 is separate
           with Refined_State => (State_1 => Constit_1);                   --  Error
      
         package body Pack_2 is separate
           with Refined_State => (State_2 => Constit_2);                   --  Error
      
         ----------------
         -- SPARK_Mode --
         ----------------
      
         package body Pack_3 is separate with SPARK_Mode => On;            --  Error
         package body Pack_4 is separate;
         package body Pack_5 is separate with SPARK_Mode => Off;           --  Error
      
         protected body Prot_Typ_1 is separate with SPARK_Mode => On;      --  Error
         protected body Prot_Typ_2 is separate;
         protected body Prot_Typ_3 is separate with SPARK_Mode => Off;     --  Error
      
         procedure Proc_3 is separate with SPARK_Mode => On;               --  Error
         procedure Proc_4 is separate;
         procedure Proc_5 is separate with SPARK_Mode => Off;              --  Error
      
         task body Task_Typ_1 is separate with SPARK_Mode => On;           --  Error
         task body Task_Typ_2 is separate;
         task body Task_Typ_3 is separate with SPARK_Mode => Off;          --  Error
      end Pack;
      
      --  pack-func_1.adb
      
      separate (Pack)
      
      function Func_1 (Formal : Integer) return Integer
        with Refined_Post => Func_1'Result > Formal                        --  Error
      is
      begin
         return Formal * 10;
      end Func_1;
      
      --  pack-func_2.adb
      
      separate (Pack)
      
      function Func_2 (Formal : Integer) return Integer
        with Refined_Post => Func_2'Result > Formal                        --  Error
      is
      begin
         return Formal * 10;
      end Func_2;
      
      --  pack-pack_1.adb
      
      separate (Pack)
      
      package body Pack_1
        with SPARK_Mode,
             Refined_State => (State_1 => Constit_1)                       --  Error
      is
         Constit_1 : Integer := 1;
      end Pack_1;
      
      --  pack-pack_2.adb
      
      separate (Pack)
      
      package body Pack_2
        with SPARK_Mode,
             Refined_State => (State_2 => Constit_2)                       --  OK
      is
         Constit_2 : Integer := 2;
      end Pack_2;
      
      --  pack-pack_3.adb
      
      separate (Pack)
      
      package body Pack_3 is end Pack_3;
      
      --  pack-pack_4.adb
      
      separate (Pack)
      
      package body Pack_4 with SPARK_Mode => On is end Pack_4;             --  OK
      
      --  pack-pack_5.adb
      
      separate (Pack)
      
      package body Pack_5 with SPARK_Mode => On is end Pack_5;             --  OK
      
      --  pack-proc_1.adb
      
      separate (Pack)
      
      procedure Proc_1
        with Refined_Global  => (In_Out  => Constit),                      --  Error
             Refined_Depends => (Constit => Constit)                       --  Error
      is begin null; end Proc_1;
      
      --  pack-proc_2.adb
      
      separate (Pack)
      
      procedure Proc_2
        with Refined_Global  => (In_Out  => Constit),                      --  Error
             Refined_Depends => (Constit => Constit)                       --  Error
      is begin null; end Proc_2;
      
      --  pack-proc_3.adb
      
      separate (Pack)
      
      procedure Proc_3 is begin null; end Proc_3;
      
      --  pack-proc_4.adb
      
      separate (Pack)
      
      procedure Proc_4 with SPARK_Mode => On is begin null; end Proc_4;    --  OK
      
      --  pack-proc_5.adb
      
      separate (Pack)
      
      procedure Proc_5 with SPARK_Mode => On is begin null; end Proc_5;    --  OK
      
      --  pack-prot_typ_1.adb
      
      separate (Pack)
      
      protected body Prot_Typ_1 is end Prot_Typ_1;
      
      --  pack-prot_typ_2.adb
      
      separate (Pack)
      
      protected body Prot_Typ_2 with SPARK_Mode => On is end Prot_Typ_2;   --  OK
      
      --  pack-prot_typ_3.adb
      
      separate (Pack)
      
      protected body Prot_Typ_3 with SPARK_Mode => On is end Prot_Typ_3;   --  OK
      
      --  pack-task_obj_1.adb
      
      separate (Pack)
      
      task body Task_Obj_1
        with Refined_Global  => (In_Out  => Constit),                      --  Error
             Refined_Depends => (Constit => Constit)                       --  Error
      is begin null; end Task_Obj_1;
      
      --  pack-task_obj_2.adb
      
      separate (Pack)
      
      task body Task_Obj_2
        with Refined_Global  => (In_Out  => Constit),                      --  Error
             Refined_Depends => (Constit => Constit)                       --  Error
      is begin null; end Task_Obj_2;
      
      --  pack-task_typ_1.adb
      
      separate (Pack)
      
      task body Task_Typ_1 is begin null; end Task_Typ_1;
      
      --  pack-task_typ_2.adb
      
      separate (Pack)
      
      task body Task_Typ_2 with SPARK_Mode => On is                        --  OK
      begin null; end Task_Typ_2;
      
      --  pack-task_typ_3.adb
      
      separate (Pack)
      
      task body Task_Typ_3 with SPARK_Mode => On is                        --  OK
      begin null; end Task_Typ_3;
      
      ----------------------------
      -- Compilation and output --
      ----------------------------
      
      $ gcc -c pack.adb
      pack.adb:12:11: useless refinement, declaration of subprogram "Proc_1" lacks
        aspect or pragma Global
      pack.adb:13:11: useless refinement, declaration of subprogram "Proc_1" lacks
        aspect or pragma Depends
      pack.adb:20:11: useless refinement, declaration of task type "Task_Obj_1" lacks
        aspect or pragma Global
      pack.adb:21:11: useless refinement, declaration of task type "Task_Obj_1" lacks
        aspect or pragma Depends
      pack.adb:42:11: aspect "Refined_State" must apply to a package body
      pack.adb:45:11: aspect "Refined_State" must apply to a package body
      pack.adb:51:41: incorrect placement of aspect "Spark_Mode"
      pack.adb:53:41: incorrect placement of aspect "Spark_Mode"
      pack.adb:55:47: incorrect placement of aspect "Spark_Mode"
      pack.adb:57:47: incorrect placement of aspect "Spark_Mode"
      pack.adb:59:38: incorrect placement of aspect "Spark_Mode"
      pack.adb:61:38: incorrect placement of aspect "Spark_Mode"
      pack.adb:63:42: incorrect placement of aspect "Spark_Mode"
      pack.adb:65:42: incorrect placement of aspect "Spark_Mode"
      pack-proc_1.adb:4:08: aspect "Refined_Global" cannot apply to a subunit
      pack-proc_1.adb:5:08: aspect "Refined_Depends" cannot apply to a subunit
      pack-proc_2.adb:4:08: aspect "Refined_Global" cannot apply to a subunit
      pack-proc_2.adb:5:08: aspect "Refined_Depends" cannot apply to a subunit
      pack-task_obj_1.adb:4:08: aspect "Refined_Global" cannot apply to a subunit
      pack-task_obj_1.adb:5:08: aspect "Refined_Depends" cannot apply to a subunit
      pack-task_obj_2.adb:4:08: aspect "Refined_Global" cannot apply to a subunit
      pack-task_obj_2.adb:5:08: aspect "Refined_Depends" cannot apply to a subunit
      pack-func_1.adb:4:08: aspect "Refined_Post" cannot apply to a subunit
      pack-func_2.adb:4:08: aspect "Refined_Post" cannot apply to a subunit
      pack-pack_1.adb:3:14: body of package "Pack_1" has unused hidden states
      pack-pack_1.adb:3:14: variable "Constit_1" defined at line 7
      pack-pack_1.adb:5:08: useless refinement, package "Pack_1" does not define
        abstract states
      pack-pack_1.adb:5:26: "State_1" is undefined
      pack-pack_3.adb:3:01: incorrect use of SPARK_Mode at pack.adb:2
      pack-pack_3.adb:3:01: value Off was set for SPARK_Mode on "Pack_3" at
        pack.ads:38
      pack-pack_4.adb:3:01: incorrect use of SPARK_Mode at pack.adb:2
      pack-pack_4.adb:3:01: value Off was set for SPARK_Mode on "Pack_4" at
        pack.ads:39
      pack-pack_4.adb:3:26: incorrect use of SPARK_Mode
      pack-pack_4.adb:3:26: value Off was set for SPARK_Mode on "Pack_4" at
        pack.ads:39
      pack-prot_typ_2.adb:3:32: incorrect use of SPARK_Mode
      pack-prot_typ_2.adb:3:32: value Off was set for SPARK_Mode on "Prot_Typ_2" at
        pack.ads:43
      pack-proc_3.adb:3:01: incorrect use of SPARK_Mode at pack.adb:2
      pack-proc_3.adb:3:01: value Off was set for SPARK_Mode on "Proc_3" at
        pack.ads:46
      pack-proc_4.adb:3:01: incorrect use of SPARK_Mode at pack.adb:2
      pack-proc_4.adb:3:01: value Off was set for SPARK_Mode on "Proc_4" at
        pack.ads:47
      pack-proc_4.adb:3:23: incorrect use of SPARK_Mode
      pack-proc_4.adb:3:23: value Off was set for SPARK_Mode on "Proc_4" at
        pack.ads:47
      pack-task_typ_2.adb:3:27: incorrect use of SPARK_Mode
      pack-task_typ_2.adb:3:27: value Off was set for SPARK_Mode on "Task_Typ_2" at
        pack.ads:51
      
      2018-05-21  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* sem_ch6.adb (Analyze_Generic_Subprogram_Body): Rename the call to
      	Analyze_Aspect_Specifications_On_Body_Or_Stub.
      	(Analyze_Subprogram_Body_Helper): Rename the calls to
      	Analyze_Aspect_Specifications_On_Body_Or_Stub.
      	* sem_ch9.adb (Analyze_Entry_Body): Rename the call to
      	Analyze_Aspect_Specifications_On_Body_Or_Stub.
      	* sem_ch10.adb: Add with and use clause for Sem_Ch13.
      	(Analyze_Package_Body_Stub): Add constant Id. Decorate the package stub
      	prior to analyzing its aspects.
      	(Analyze_Protected_Body_Stub): Add constant Id. Decorate the package
      	stub prior to analyzing its aspects. Save and restore the configuration
      	switches.
      	(Analyze_Task_Body_Stub): Add constant Id. Decorate the package stub
      	prior to analyzing its aspects.
      	* sem_ch13.adb (Analyze_Aspect_Specifications_On_Body_Or_Stub): Renamed
      	to Analyze_Aspects_On_Subprogram_Body_Or_Stub.
      	* sem_ch13.ads (Analyze_Aspect_Specifications_On_Body_Or_Stub): Renamed
      	to Analyze_Aspects_On_Subprogram_Body_Or_Stub.
      	* sem_prag.adb: Code reformatting.
      	(Analyze_Refined_Depends_Global_Post): Consider task body stubs.
      
      From-SVN: r260469
      Hristian Kirtchev committed
    • [Ada] Add g-soliop__qnx.ads to the runtime build · f35b3e38
      This properly links with libsocket when needed by the user code.
      
      2018-05-21  Jerome Lambourg  <lambourg@adacore.com>
      
      gcc/ada/
      
      	* gcc-interface/Makefile.in: Add g-soliop__qnx.ads to the runtime build
      	for QNX.
      
      From-SVN: r260468
      Jerome Lambourg committed
    • [Ada] Spurious error on early call region of tagged type · 7a500fd7
      This patch corrects the part of the access-before-elaboration mechanism which
      ensures that the freeze node of a tagged type is within the early call region
      of all its overriding bodies to ignore predefined primitives.
      
      ------------
      -- Source --
      ------------
      
      --  pack.ads
      
      package Pack with SPARK_Mode is
         type Parent_Typ is tagged null record;
         procedure Prim (Obj : Parent_Typ);
      
         type Deriv_Typ is new Parent_Typ with private;
         overriding procedure Prim (Obj : Deriv_Typ);
      
      private
         type Deriv_Typ is new Parent_Typ with null record;
      end Pack;
      
      -----------------
      -- Compilation --
      -----------------
      
      $ gcc -c pack.ads
      
      2018-05-21  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* exp_cg.adb: Remove with and use clause for Exp_Disp.
      	* exp_ch9.adb: Remove with and use clause for Exp_Disp.
      	* exp_disp.adb (Is_Predefined_Dispatching_Operation): Moved to Sem_Util.
      	(Is_Predefined_Interface_Primitive): Moved to Sem_Util.
      	(Is_Predefined_Internal_Operation): Moved to Sem_Util.
      	* exp_disp.ads (Is_Predefined_Dispatching_Operation): Moved to Sem_Util.
      	(Is_Predefined_Interface_Primitive): Moved to Sem_Util.
      	(Is_Predefined_Internal_Operation): Moved to Sem_Util.
      	* exp_dist.adb: Remove with and use clause for Exp_Disp.
      	* freeze.adb: Remove with and use clause for Exp_Disp.
      	* sem_cat.adb: Remove with and use clause for Exp_Disp.
      	* sem_ch6.adb: Remove with and use clause for Exp_Disp.
      	* sem_ch12.adb: Remove with and use clause for Exp_Disp.
      	* sem_elab.adb (Check_Overriding_Primitive): Do not process predefined
      	primitives.
      	* sem_util.adb: Remove with and use clause for Exp_Disp.
      	(Is_Predefined_Dispatching_Operation): Moved from Exp_Disp.
      	(Is_Predefined_Interface_Primitive): Moved from Exp_Disp.
      	(Is_Predefined_Internal_Operation): Moved from Exp_Disp.
      	* sem_util.ads (Is_Predefined_Dispatching_Operation): Moved from
      	Exp_Disp.
      	(Is_Predefined_Interface_Primitive): Moved from Exp_Disp.
      	(Is_Predefined_Internal_Operation): Moved from Exp_Disp.
      
      From-SVN: r260467
      Hristian Kirtchev committed
    • [Ada] Error message on invalid conversion involving limited views · 516057d3
      A type conversion may be illegal if the expression in the conversion has a
      limited view of a type. This patch expands the error report to indicate the
      presence of a limited view, and when the context is a package body it suggests
      the addition of a regular with-clause to make the full view available.
      
      Compiling client.adb must yield:
      
         client.adb:6:16: invalid conversion, not compatible with limited view
            of type "Map_Type" defined at maps.ads:2
         client.adb:6:16: add with_clause for "Maps" to current unit
      
      ----
      package Maps is
        type Map_Type is null record;
      end;
      ----
      limited with Maps;
      package Payloads is
        function Get_Map return access Maps.Map_Type;
      end;
      ----
      with Maps;
      package Maps2 is
        type New_Map_Type is new Maps.Map_Type;
      end;
      ----
      with Maps2;
      package Client is
        procedure Foo (Map : Maps2.New_Map_Type) is null;
        procedure Bar;
      end;
      ----
      with Payloads;
      package body Client is
        procedure Bar is
        begin
           Foo (Maps2.New_Map_Type (Payloads.Get_Map.all));
        end;
      end;
      
      2018-05-21  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_res.adb (Valid_Conversion): Improve error message on an illegal
      	type conversion whose expression has a limited view of a type.
      
      From-SVN: r260466
      Ed Schonberg committed