1. 29 May, 2018 21 commits
    • [Ada] Tighten crtbegin files for VxWorks · 1f39fcd6
      Enforce a more explicit distinction of crtbegin objects holding
      either functions with ctor/dtor attributes or _ctors/_dtors arrays,
      or none of the two (no array, no attributes). Then allow/enforce
      different linking strategies for VxWorks 7.
      
      2018-05-29  Olivier Hainque  <hainque@adacore.com>
      
      gcc/ada/
      
      	* vx_crtbegin.inc: Use a consistent naming convention for the
      	registration/deregistration functions across RTP or kernel.  Remove the
      	ctor/dtor attribute setting based on RTP/kernel, expect the optional
      	attribute extension to be provided by includers instead.
      	* vx_crtbegin.c: Mere inclusion of vx_crtbegin.inc with empty attribute
      	extension for the registration/deregistration functions.
      	* vx_crtbegin_attr.c: New file. Include vx_crtbegin.inc with explicit
      	constructor/destructor attribute extensions.
      	* vx_crtbegin_array.c: New file. Include vx_crtbegin.inc with empty
      	attribute extensions and declare _ctors/_dtors arrays.
      	* vx_crtbegin_auto.c: Remove.
      	* libgnat/system-vxworks7-aarch64-rtp-smp.ads: Use
      	vxworks7-gnat-crtbe-link.spec.
      	* libgnat/system-vxworks7-aarch64.ads: Likewise.
      	* libgnat/system-vxworks7-e500-rtp-smp.ads: Likewise.
      	* libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise.
      	* libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise.
      	* libgnat/system-vxworks7-x86-kernel.ads: Likewise.
      	* libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise.
      	* libgnat/system-vxworks7-x86_64-kernel.ads: Likewise.
      	* libgnat/system-vxworks7-x86_64-rtp-smp.ads: Likewise.
      
      From-SVN: r260876
      Olivier Hainque committed
    • [Ada] Minor reformatting · 8f1edbd3
      2018-05-29  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* ali.adb: Minor reformatting.
      
      From-SVN: r260875
      Piotr Trojanek committed
    • [Ada] GNAT UGN: update package requirements for 32bit GNAT on x86_64-linux · c258a5b2
      2018-05-29  Joel Brobecker  <brobecker@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_ugn/platform_specific_information.rst: Update package
      	requirements for 32bit GNAT on x86_64-linux.
      	* gnat_ugn.texi: Regenerate.
      
      From-SVN: r260874
      Joel Brobecker committed
    • [Ada] Adjustment of behavior of new -gnatRj switch · de9b2a96
      This decouples -gnatRj from the destination, either standard output or file,
      so that it only toggles the format of the representation information.
      
      2018-05-29  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_ugn/building_executable_programs_with_gnat.rst (Debugging
      	Control): Adjust description of -gnatRj.
      	* gnat_ugn.texi: Regenerate.
      	* opt.ads (List_Representation_Info_To_JSON): Likewise.
      	* repinfo.adb (List_Rep_Info): Do not automatically create a file
      	if List_Representation_Info_To_JSON is true.
      	* switch-c.adb (Scan_Front_End_Switches) <R>: Remove incompatibility
      	check between -gnatRj and -gnatRs.
      	* usage.adb (Usage): Adjust description of -gnatRj.
      
      From-SVN: r260873
      Eric Botcazou committed
    • [Ada] Fix constraint error in Normalize_Pathname · ce09c3c0
      Fix Normalize_Pathname to avoid a constraint error.
      
      2018-05-29  Pascal Obry  <obry@adacore.com>
      
      gcc/ada/
      
      	* libgnat/s-os_lib.adb (Normalize_Pathname): Fix handling of ".." in
      	the root directory.
      
      gcc/testsuite/
      
      	* gnat.dg/normalize_pathname.adb: New testcase.
      
      From-SVN: r260872
      Pascal Obry committed
    • [Ada] System.Os_Lib: minor reformatting · ae3d5f11
      2018-05-29  Pascal Obry  <obry@adacore.com>
      
      gcc/ada/
      
      	* libgnat/s-os_lib.adb: Minor reformatting.
      
      From-SVN: r260871
      Pascal Obry committed
    • [Ada] New function to return nanoseconds from Unix Epoch · 35f5e2c1
      2018-05-29  Doug Rupp  <rupp@adacore.com>
      
      gcc/ada/
      
      	* libgnat/a-calend.adb (Epoch_Offset): Move from body to ...
      	* libgnat/a-calend.ads (Epoch_Offset): to private part of spec
      	* libgnat/a-calcon.ads (To_Unix_Nano_Time): New function spec.
      	* libgnat/a-calcon.adb (To_Unix_Nano_Time): New function body.
      
      From-SVN: r260870
      Doug Rupp committed
    • [Ada] Enhance output of discriminants with -gnatR in JSON mode · 0f9ca030
      This arranges for the Discriminant_Number of discriminants to be output
      by -gnatR in JSON mode.  This number is referenced in symbolic expressions
      present for offsets and sizes, so its definition is also required for the
      sake of completeness.
      
      2018-05-29  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* repinfo.ads (JSON format): Document new pair for components.
      	* repinfo.adb (Derived_Discriminant): New function.
      	(List_Structural_Record_Layout): Add Outer_Ent parameter and pass it
      	in recursive calls. If the record type is the parent of an extension,
      	find and list the derived discriminant from the extension, if any.
      	(List_Component_Layout): List the Discriminant_Number in JSON mode.
      	(List_Record_Info): Adjust call to List_Structural_Record_Layout.
      
      From-SVN: r260869
      Eric Botcazou committed
    • [Ada] Implement machine parsable format for -gnatR output · 1e7629b8
      This adds a new variant to the -gnatR switch, namely -gnatRj, which causes
      the compiler to output representation information to a file in the JSON
      data interchange format.  It can be combined with -gnatR0/1/2/3/m (but is
      incompatible with -gnaRe and -gnatRs).
      
      The information output in this mode is a superset of that output in the
      traditional -gnatR mode, but is otherwise equivalent for the common part.
      
      2018-05-29  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_ugn/building_executable_programs_with_gnat.rst (Alphabetical
      	List of All Switches): Document -gnatRj.
      	(Debugging Control): Likewise.
      	* gnat_ugn.texi: Regenerate.
      	* opt.ads (List_Representation_Info_To_JSON): New boolean variable.
      	* osint-c.adb (Create_Repinfo_File): Use the .json instead of .rep
      	extension if List_Representation_Info_To_JSON is true.
      	* repinfo.ads: Document the JSON output format.
      	* repinfo.adb (List_Location): New procedure.
      	(List_Array_Info): Add support for JSON output.
      	(List_Entities): Likewise.
      	(Unop): Likewise.
      	(Binop): Likewise.
      	(Print_Expr): Likewise.
      	(List_Linker_Section): Likewise.
      	(List_Mechanisms): Likewise.
      	(List_Name): Likewise.
      	(List_Object_Info): Likewise.
      	(List_Record_Info): Likewise.
      	(List_Component_Layout): Likewise.  Add Indent parameter.
      	(List_Structural_Record_Layout): New procedure.
      	(List_Attr): Add support for JSON output.
      	(List_Type_Info): Likewise.
      	(Write_Unknown_Val): Likewise.
      	* switch-c.adb (Scan_Front_End_Switches) <R>: Deal with 'j'.
      	* usage.adb (Usage): List -gnatRj.
      
      From-SVN: r260868
      Eric Botcazou committed
    • [Ada] Factor out worker procedure for -gnatR · 7883c42e
      This extracts a worker procedure for printing the layout of a single component
      from List_Record_Layout so as to make the next change more readable.
      
      2018-05-29  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* repinfo.adb (List_Component_Layout): New procedure extracted from...
      	(List_Record_Layout): ...here.  Invoke it.
      
      From-SVN: r260867
      Eric Botcazou committed
    • [Ada] Minor cleanup in repinfo unit · 76b382d9
      This factors out the various cases where a marker for an unknown value is
      output by the -gnatR switches.  No functional changes.
      
      2018-05-29  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* repinfo.adb (Write_Unknown_Val): New procedure.
      	(List_GCC_Expression): Call it.
      	(List_Record_Layout): Likewise.
      	(Write_Val): Likewise.
      
      From-SVN: r260866
      Eric Botcazou committed
    • [Ada] Clear Do_Overflow_Check when inserting code to do check · c35c40e7
      2018-05-29  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
      
      gcc/ada/
      
      	* exp_ch4.adb (Expand_N_Op_Abs): Clear Do_Overflow_Check when inserting
      	code to do check.
      
      From-SVN: r260865
      Richard Kenner committed
    • [Ada] Lib.Write: avoid use of System.Case_Util · ccec48c0
      2018-05-29  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* lib-writ.adb (Write_ALI): Do not use new function from s-casuti yet.
      	This breaks build of cross compilers with older versions of GNAT, so
      	better avoid it.
      
      From-SVN: r260864
      Arnaud Charlet committed
    • [Ada] Refine documentation of Monotonic_Clock to reflect reality · eda45984
      2018-05-29  Doug Rupp  <rupp@adacore.com>
      
      gcc/ada/
      
      	* libgnarl/s-taprop.ads (Monotonic_Clock): Refine documentation to
      	reflect reality.
      
      From-SVN: r260863
      Doug Rupp committed
    • [Ada] Always do range check against 'First · d8eb4ac4
      2018-05-29  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
      
      gcc/ada/
      
      	* exp_ch4.adb (Expand_N_Op_Abs): Always do range check against 'First.
      
      From-SVN: r260862
      Richard Kenner committed
    • [Ada] Fix irregular output with -gnatRm · 28cfa269
      The information displayed by -gnatRm was using slightly different naming
      and formatting conventions than the rest of the -gnatR information with
      no justification, so this adjusts it for the sake of consistency.
      
      For the following package:
      
      package P is
      
        function F (I : Integer) return Integer;
      
        type Rec is limited record
          I : Integer;
        end record;
      
        procedure P1 (R : Rec; I : out Integer);
      
        procedure P2 (R : Rec; I : out Integer);
        pragma Linker_Section (P2, ".my_section");
      
        package Inner is
      
          procedure P3;
      
        end Inner;
      
      end P;
      
      package body P is
      
        function F (I : Integer) return Integer is
        begin
          return I;
        end;
      
        procedure P1 (R : Rec; I : out Integer) is
        begin
          I := R.I;
        end;
      
        procedure P2 (R : Rec; I : out Integer) is
        begin
          I := R.I;
        end;
      
        package body Inner is
      
           procedure P3 is
           begin
             null;
           end;
      
        end Inner;
      
      end P;
      
      the output of -gnatRm must be:
      
      Representation information for unit P (body)
      --------------------------------------------
      
      Representation information for unit P (spec)
      --------------------------------------------
      
      function F declared at p7.ads:3:12
      convention : Ada
         I : passed by copy
      returns by copy
      
      for Rec'Size use 32;
      for Rec'Alignment use 4;
      for Rec use record
         I at 0 range  0 .. 31;
      end record;
      
      procedure P1 declared at p7.ads:9:13
      convention : Ada
         R : passed by reference
         I : passed by copy
      
      procedure P2 declared at p7.ads:11:13
      convention : Ada
         R : passed by reference
         I : passed by copy
      pragma Linker_Section (P2, ".my_section");
      
      procedure Inner.P3 declared at p7.ads:16:15
      convention : Ada
      
      2018-05-29  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* repinfo.adb (List_Entities): Do not list the Linker_Section for
      	subprograms here...
      	(List_Mechanisms): ...but here instead.  Use consistent name output
      	and formatting conventions.
      
      From-SVN: r260861
      Eric Botcazou committed
    • [Ada] Preliminary work to avoid full pathnames in ALI files · 9f4b346b
      Normally, ALI files refer to source files using simple names. This allows files
      to be moved around without disturbing things (causing extra recompilations,
      etc). However, for configuration files, the full pathname is stored. This patch
      preparates the code base to store the simple name in this case.
      
      2018-05-29  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* lib-writ.adb (Write_ALI): Cleanup: avoid use of global var; call new
      	To_Lower function.
      	* libgnat/s-casuti.ads, libgnat/s-casuti.adb (To_Upper, To_Lower,
      	To_Mixed): New functions.
      	* osint.adb: Cleanup: use Is_Directory_Separator, which correctly
      	allows both '\' and '/' on Windows.
      
      From-SVN: r260860
      Bob Duff committed
    • [testsuite] Fix "too few/many" error messages in scan-*-times procs · 0c46b426
      2018-05-29  Tom de Vries  <tom@codesourcery.com>
      
      	* lib/scanasm.exp (scan-assembler-times): Use proc name in error
      	message.
      	* lib/scanipa.exp (scan-ipa-dump-times): Same.
      	* lib/scanrtl.exp (scan-rtl-dump-times): Same.
      	* lib/scantree.exp (scan-tree-dump-times): Same.
      
      From-SVN: r260859
      Tom de Vries committed
    • [testsuite] Use correct proc names in scanasm.exp · e79182bb
      2018-05-29  Tom de Vries  <tom@codesourcery.com>
      
      	* lib/scanasm.exp (scan-stack-usage, scan-stack-usage-not)
      	(scan-ada-spec, scan-ada-spec-not, scan-lto-assembler):
      	Use proc name as first argument to dg-scan.
      
      From-SVN: r260858
      Tom de Vries committed
    • [testsuite] Fix error message in scan-hidden/scan-not-hidden · b4d0b1a7
      2018-05-29  Tom de Vries  <tom@codesourcery.com>
      
      	* lib/scanasm.exp (scan-hidden, scan-not-hidden): Handle being called
      	with no arguments.
      
      From-SVN: r260857
      Tom de Vries committed
    • Daily bump. · 240e12d0
      From-SVN: r260856
      GCC Administrator committed
  2. 28 May, 2018 19 commits
    • config.gcc: Identify FreeBSD 3.x and 4.x as unsupported. · 1eae4574
      	* config.gcc: Identify FreeBSD 3.x and 4.x as unsupported.
      
      	* config/freebsd-spec.h (FBSD_LIB_SPEC): Only consider FreeBSD 5
      	and later.
      
      From-SVN: r260852
      Gerald Pfeifer committed
    • re PR fortran/85840 (Memory leak in write.c) · 1f161c48
      2018-05-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR libgfortran/85840
      	* io/write.c (write_real, write_real_g0, write_complex): Use
      	separate local variables for the float string length.
      
      From-SVN: r260851
      Jerry DeLisle committed
    • splay-tree.h (splay_tree_compare_strings, [...]): Declare new utility functions. · b0c31bc6
      include:
      2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * splay-tree.h (splay_tree_compare_strings,
              splay_tree_delete_pointers): Declare new utility functions.
      
      libiberty:
      2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * splay-tree.c (splay_tree_compare_strings,
              splay_tree_delete_pointers): New utility functions.
      
      gcc:
      2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * tree-dump.c (dump_node): Use splay_tree_delete_pointers.
      
      c-family:
      2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * c-lex.c (get_fileinfo): Use splay_tree_compare_strings and
              splay_tree_delete_pointers.
      
      cp:
      2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * decl2.c (start_static_storage_duration_function): Use
              splay_tree_delete_pointers.
      
      From-SVN: r260850
      Bernd Edlinger committed
    • re PR middle-end/85933 (FAIL: gcc.dg/sso/p8.c -O3 -finline-functions (internal compiler error)) · 3b1cffcc
      2018-05-28  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/85933
      	* tree-vect-data-refs.c (vect_record_base_alignments): Only
      	look at stmts marked as vectorizable.
      
      From-SVN: r260848
      Richard Biener committed
    • re PR tree-optimization/85934 (ICE: verify_gimple failed (error: type mismatch… · b29502e7
      re PR tree-optimization/85934 (ICE: verify_gimple failed (error: type mismatch in vector pack expression))
      
      2018-05-28  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/85934
      	* tree-vect-generic.c (expand_vector_operations_1): Hoist
      	vector boolean check before scalar optimization.
      
      	* gcc.target/i386/pr85934.c: New testcase.
      
      From-SVN: r260847
      Richard Biener committed
    • invoke.texi (ARM Options): Use @item instead of @itemx for armv5te. · 533aa46a
      	* doc/invoke.texi (ARM Options): Use @item instead of @itemx
      	for armv5te.
      
      From-SVN: r260846
      Jakub Jelinek committed
    • DWARF: Handle expressions containing "-1" in dw2_asm_output_delta_uleb128. · 7728669d
      In dwarf2out.c dwarf2out_var_location () we create loclabels that might
      contain -1 (for example ".LVL5-1"). Technically those are expressions,
      not just plain labels. But they work fine everywhere we use them, except
      when calculating an uleb128 delta between two labels.
      
      For example we might create the following DWARF5 location list entry:
      
              .byte   0x3     # DW_LLE_startx_length (*.LLST0)
              .uleb128 0x6    # Location list range start index (*.LVL5-1)
              .uleb128 .LFE1-.LVL5-1        # Location list length (*.LLST0)
              .uleb128 0x1    # Location expression size
              .byte   0x54    # DW_OP_reg4
              .byte   0       # DW_LLE_end_of_list (*.LLST0)
      
      Note the length is calculated using .uleb128 .LFE1-.LVL5-1. This is
      wrong, since both .LVL5 and 1 are substracted from .LFE1, instead of
      1 being subtracted from .LVL5 first, before substracting from .LFE1.
      
      This happens because dw2_asm_output_delta_uleb128 expects two plain
      labels and simply inserts a minus sign between them. To fix this we
      simply look if the second label is actually an expression containing
      a minus sign and then add brackets around it. That will emit the
      correct .uleb128 expression:
      
              .uleb128 .LFE1-(.LVL5-1)        # Location list length (*.LLST0)
      
      We cannot simply generate the loclabel containing brackets directly
      because we do use them also in contexts that don't take a full
      expression (for example we use them with .quad too).
      
      gcc/
      
      	* dwarf2asm.c (dw2_asm_output_delta_uleb128): Add brackets around
      	lab2 if it is an expression containing a minus sign.
      
      From-SVN: r260845
      Mark Wielaard committed
    • [Ada] Minor fixes and tweaks to comments in the Repinfo unit · ab4dad49
      2018-05-28  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* repinfo.ads: Minor fixes and tweaks in comments.
      
      From-SVN: r260844
      Eric Botcazou committed
    • [Ada] Remove Valop from the Repinfo unit · 575e47bf
      This removes the recently added Valop as redundant.  No functional changes.
      
      2018-05-28  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* repinfo.adb (List_GCC_Expression): Remove Valop and replace calls to
      	it with calls to Unop.
      
      From-SVN: r260843
      Eric Botcazou committed
    • [Ada] Minor cleanup in repinfo unit · 72da915b
      This removes the Truth_Andif_Expr and Truth_Orif_Expr codes for expressions
      handled by the repinfo unit, since they are redundant with Truth_And_Expr
      and Truth_Or_Expr respectively in this context.  No functional changes.
      
      2018-05-28  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* repinfo.ads (TCode): Adjust range.
      	(Truth_Andif_Expr): Remove.
      	(Truth_Orif_Expr): Likewise.
      	(Truth_And_Expr .. Dynamic_Val): Adjust value.
      	* repinfo.adb (Print_Expr): Remove handling of Truth_{And,Or}if_Expr.
      	(Rep_Value): Likewise.
      	* repinfo.h (Truth_Andif_Expr): Remove.
      	(Truth_Orif_Expr): Likewise.
      	(Truth_And_Expr .. Dynamic_Val): Adjust value.
      	* gcc-interface/decl.c (annotate_value) <TRUTH_ANDIF_EXPR>: Fall
      	through to TRUTH_AND_EXPR case.
      	<TRUTH_ORIF_EXPR>: Fall through to TRUTH_OR_EXPR case.
      
      From-SVN: r260842
      Eric Botcazou committed
    • [Ada] Unnesting: check index expressions for uplevel references · 184a6ba6
      2018-05-28  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_unst.adb (Visit_Node): For indexed components and attribute
      	references, examine index expressions or associated expressions as well
      	to record uplevel references.
      	(Vist_Node): For function and procedure calls, if a formal is an
      	unconstrained array and the actual is constrained, check whether bounds
      	of actual have uplevel references.
      
      From-SVN: r260841
      Ed Schonberg committed
    • [Ada] Unnesting: allow uplevel references to exceptions · 6af9261c
      2018-05-28  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* einfo.ads, einfo.adb: Exceptions can be uplevel references, and thus
      	they can appear as components of activation records.
      	* exp_unst.adb (Visit_Node): A reference to an exception may be an
      	uplevel reference.
      
      From-SVN: r260840
      Ed Schonberg committed
    • [Ada] Fix internal error on renaming of equality for record type · bcad5029
      This adjusts the previous change to the cases where the array type is not
      yet frozen and, therefore, where Size_Depends_On_Discriminant is not yet
      computed, by doing the computation manually.
      
      2018-05-28  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* exp_ch4.adb (Expand_Composite_Equality): Compute whether the size
      	depends on a discriminant manually instead of using the predicate
      	Size_Depends_On_Discriminant in the array type case.
      
      gcc/testsuite/
      
      	* gnat.dg/renaming12.adb, gnat.dg/renaming12.ads: New testcase.
      
      From-SVN: r260839
      Eric Botcazou committed
    • [Ada] Improve unnesting for discriminants of record subtypes · 4fd9587f
      2018-05-28  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_unst.adb (Check_Static_Type): For a record subtype, check
      	discriminant constraints as well.
      	(Visit_Node): For a selected component, check type of prefix, as is
      	done for indexed components and slices.
      
      From-SVN: r260838
      Ed Schonberg committed
    • [Ada] Fix regression of ACATS c46032a with CCG back end · 04920bb6
      2018-05-28  Javier Miranda  <miranda@adacore.com>
      
      gcc/ada/
      
      	* exp_ch4.adb (Real_Range_Check): Add a temporary to store the integer
      	value when converting a float value to a fixed-point value. This is
      	required for CCG because it handles fixed-point types by means of
      	unsigned integer type variables. The range check is now performed using
      	the integer value stored in this temporary.
      
      From-SVN: r260837
      Javier Miranda committed
    • [Ada] Update FE check following change in SPARK RM 7.1.3(12) · cb1a0672
      SPARK Reference Manual changed to accept attributes First, Last and Length
      as not leading to an evaluation of a part of the prefix object. This is
      reflected here in the checking code for that rule.
      
      2018-05-28  Yannick Moy  <moy@adacore.com>
      
      gcc/ada/
      
      	* sem_util.adb (Is_OK_Volatile_Context): Add attributes First, Last and
      	Length as valid non-interfering contexts for SPARK.
      
      From-SVN: r260836
      Yannick Moy committed
    • [Ada] Allow for GNATprove specific versions of routines from Sem_Disp · cc821e65
      2018-05-28  Claire Dross  <dross@adacore.com>
      
      gcc/ada/
      
      	* sem_disp.ads, sem_disp.adb (Inheritance_Utilities): Package for
      	generic inheritance utilities.
      	(Generic_Inherited_Subprograms): Generic version of
      	Inherited_Subprograms, generic in Find_Dispatching_Type function.
      	(Generic_Is_Overriding_Subprogram): Generic version of
      	Is_Overriding_Subprogram, generic in Find_Dispatching_Type function.
      	(Inherited_Subprograms): Instance of Generic_Inherited_Subprograms with
      	Sem_Disp.Find_Dispatching_Type.
      	(Is_Overriding_Subprogram): Instance of
      	Generic_Is_Overriding_Subprogram with Sem_Disp.Find_Dispatching_Type.
      	(Inheritance_Utilities_Inst): Instance of Inheritance_Utilities
      	with Sem_Disp.Find_Dispatching_Type.
      
      From-SVN: r260835
      Claire Dross committed
    • [Ada] Fix internal error on nested record types with representation clause · 0c386027
      This fixes a long-standing issue with the expansion of equality functions
      generated for discriminated record types with variant part.  In this case
      the front-end recursively expands equality functions for the composite
      sub-components, in particular the array sub-components.
      
      But it systematically uses the unconstrained base type for them, which leads
      to both a more complex equality function, because of the need to compare
      the bounds, and an additional unchecked conversion from type to base type.
      
      Now this unchecked conversion may block a further expansion of the array
      sub-component, for example if it is a large array of record types subject
      to a component clause that causes it not to start on a byte boundary, and
      thus may lead to an internal error downstream in the back-end.
      
      2018-05-28  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* exp_ch4.adb (Expand_Composite_Equality): For a composite (or FP)
      	component type, do not expand array equality using the unconstrained
      	base type, except for the case where the bounds of the type depend on a
      	discriminant.
      
      gcc/testsuite/
      
      	* gnat.dg/rep_clause6.adb, gnat.dg/rep_clause6.ads: New testcase.
      
      From-SVN: r260834
      Eric Botcazou committed
    • [Ada] Introduce a new Needs_Activation_Record entity flag · c84205cd
      2018-05-28  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* einfo.ads, einfo.adb (Needs_Activation_Record): New flag on
      	access-to-subprogram types, to indicate that an indirect call through
      	such a type requires an activation record when compiling for LLVM.
      	* sem_ch3.adb (Access_Subprogram_Declaration): Set new flag as needed.
      
      From-SVN: r260833
      Ed Schonberg committed