161752 Commits

Author SHA1 Message Date
Piotr Trojanek
8f1edbd3ac [Ada] Minor reformatting
2018-05-29  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* ali.adb: Minor reformatting.

From-SVN: r260875
2018-05-29 09:40:37 +00:00
Joel Brobecker
c258a5b2fa [Ada] GNAT UGN: update package requirements for 32bit GNAT on x86_64-linux
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
2018-05-29 09:40:15 +00:00
Eric Botcazou
de9b2a969e [Ada] Adjustment of behavior of new -gnatRj switch
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
2018-05-29 09:39:44 +00:00
Pascal Obry
ce09c3c07f [Ada] Fix constraint error in Normalize_Pathname
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
2018-05-29 09:39:11 +00:00
Pascal Obry
ae3d5f110d [Ada] System.Os_Lib: minor reformatting
2018-05-29  Pascal Obry  <obry@adacore.com>

gcc/ada/

	* libgnat/s-os_lib.adb: Minor reformatting.

From-SVN: r260871
2018-05-29 09:38:41 +00:00
Doug Rupp
35f5e2c14a [Ada] New function to return nanoseconds from Unix Epoch
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
2018-05-29 09:38:17 +00:00
Eric Botcazou
0f9ca0303e [Ada] Enhance output of discriminants with -gnatR in JSON mode
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
2018-05-29 09:37:43 +00:00
Eric Botcazou
1e7629b8a2 [Ada] Implement machine parsable format for -gnatR output
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
2018-05-29 09:36:51 +00:00
Eric Botcazou
7883c42e3f [Ada] Factor out worker procedure for -gnatR
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
2018-05-29 09:36:34 +00:00
Eric Botcazou
76b382d9a0 [Ada] Minor cleanup in repinfo unit
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
2018-05-29 09:35:57 +00:00
Richard Kenner
c35c40e7f6 [Ada] Clear Do_Overflow_Check when inserting code to do check
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
2018-05-29 09:35:25 +00:00
Arnaud Charlet
ccec48c0a4 [Ada] Lib.Write: avoid use of System.Case_Util
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
2018-05-29 09:34:47 +00:00
Doug Rupp
eda45984f4 [Ada] Refine documentation of Monotonic_Clock to reflect reality
2018-05-29  Doug Rupp  <rupp@adacore.com>

gcc/ada/

	* libgnarl/s-taprop.ads (Monotonic_Clock): Refine documentation to
	reflect reality.

From-SVN: r260863
2018-05-29 09:33:50 +00:00
Richard Kenner
d8eb4ac457 [Ada] Always do range check against 'First
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
2018-05-29 09:31:00 +00:00
Eric Botcazou
28cfa26975 [Ada] Fix irregular output with -gnatRm
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
2018-05-29 09:29:28 +00:00
Bob Duff
9f4b346b0b [Ada] Preliminary work to avoid full pathnames in ALI files
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
2018-05-29 09:28:59 +00:00
Tom de Vries
0c46b4263c [testsuite] Fix "too few/many" error messages in scan-*-times procs
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
2018-05-29 07:08:34 +00:00
Tom de Vries
e79182bb71 [testsuite] Use correct proc names in scanasm.exp
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
2018-05-29 07:08:23 +00:00
Tom de Vries
b4d0b1a7e6 [testsuite] Fix error message in scan-hidden/scan-not-hidden
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
2018-05-29 07:08:11 +00:00
GCC Administrator
240e12d031 Daily bump.
From-SVN: r260856
2018-05-29 00:16:38 +00:00
Gerald Pfeifer
1eae45747a config.gcc: Identify FreeBSD 3.x and 4.x as unsupported.
* 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
2018-05-28 23:20:15 +00:00
Jerry DeLisle
1f161c48ed re PR fortran/85840 (Memory leak in write.c)
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
2018-05-28 21:55:31 +00:00
Bernd Edlinger
b0c31bc65b splay-tree.h (splay_tree_compare_strings, [...]): Declare new utility functions.
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
2018-05-28 18:21:23 +00:00
Richard Biener
3b1cffccce re PR middle-end/85933 (FAIL: gcc.dg/sso/p8.c -O3 -finline-functions (internal compiler error))
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
2018-05-28 10:31:46 +00:00
Richard Biener
b29502e735 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
2018-05-28 10:28:38 +00:00
Jakub Jelinek
533aa46a86 invoke.texi (ARM Options): Use @item instead of @itemx for armv5te.
* doc/invoke.texi (ARM Options): Use @item instead of @itemx
	for armv5te.

From-SVN: r260846
2018-05-28 12:20:56 +02:00
Mark Wielaard
7728669d4b DWARF: Handle expressions containing "-1" in dw2_asm_output_delta_uleb128.
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
2018-05-28 09:06:02 +00:00
Eric Botcazou
ab4dad4912 [Ada] Minor fixes and tweaks to comments in the Repinfo unit
2018-05-28  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* repinfo.ads: Minor fixes and tweaks in comments.

From-SVN: r260844
2018-05-28 08:56:20 +00:00
Eric Botcazou
575e47bf05 [Ada] Remove Valop from the Repinfo unit
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
2018-05-28 08:56:15 +00:00
Eric Botcazou
72da915b16 [Ada] Minor cleanup in repinfo unit
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
2018-05-28 08:56:08 +00:00
Ed Schonberg
184a6ba6e0 [Ada] Unnesting: check index expressions for uplevel references
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
2018-05-28 08:56:03 +00:00
Ed Schonberg
6af9261c73 [Ada] Unnesting: allow uplevel references to exceptions
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
2018-05-28 08:55:57 +00:00
Eric Botcazou
bcad5029a8 [Ada] Fix internal error on renaming of equality for record type
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
2018-05-28 08:55:52 +00:00
Ed Schonberg
4fd9587f7c [Ada] Improve unnesting for discriminants of record subtypes
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
2018-05-28 08:55:47 +00:00
Javier Miranda
04920bb67f [Ada] Fix regression of ACATS c46032a with CCG back end
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
2018-05-28 08:55:42 +00:00
Yannick Moy
cb1a067201 [Ada] Update FE check following change in SPARK RM 7.1.3(12)
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
2018-05-28 08:55:35 +00:00
Claire Dross
cc821e6510 [Ada] Allow for GNATprove specific versions of routines from Sem_Disp
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
2018-05-28 08:55:22 +00:00
Eric Botcazou
0c386027b7 [Ada] Fix internal error on nested record types with representation clause
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
2018-05-28 08:54:55 +00:00
Ed Schonberg
c84205cd4f [Ada] Introduce a new Needs_Activation_Record entity flag
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
2018-05-28 08:54:46 +00:00
Ed Schonberg
a98217beaa [Ada] Better accuracy in float-to-fixed conversions
This patch improves the accuracy of conversions from a floating point to
a fixed point type when the fixed point type has a specified Snall that is
not a power of two. Previously the conversion of Fixed_Point_Type'First to
some floating point number and back to Fixed_Point_Type raised Constraint
error. This result is within the accuracy imposed by tne Numerics annex of
the RM but is certainly undesirable. This patch transforms the conversion
to avoid extra manipulations of the 'Small of the type, so that the
identity:

      Fixed_T (Float_T (Fixed_Val)) = Fixed_Val

holds over the range of Fixed_T.

2018-05-28  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_ch4.adb (Real_Range_Check): Specialize float-to-fixed conversions
	when bounds of fixed type are static, to remove some spuerfluous
	implicit conversions and provide an accurate result when converting
	back and forth between the fixed point type and a floating point type.

gcc/testsuite/

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

From-SVN: r260832
2018-05-28 08:54:41 +00:00
Ed Schonberg
f4bf7b62fa [Ada] Don't create empty activation records
2018-05-28  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_unst.adb (Unnest_Subprogram): Prevent creation of empty
	activation records.

From-SVN: r260831
2018-05-28 08:54:34 +00:00
Richard Kenner
577ad216dc [Ada] Improve unnesting of indexed references
2018-05-28  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

gcc/ada/

	* exp_unst.adb (Check_Static_Type): Add argument to indicate node to be
	replaced, if any; all callers changed.
	(Note_Uplevel_Ref): Likewise.  Also replace reference to deferred
	constant with private view so we take the address of that entity.
	(Note_Uplevel_Bound): Add argument to indicate node to be replaced, if
	any; all callers changed.  Handle N_Indexed_Component like
	N_Attribute_Reference.  Add N_Type_Conversion case.
	(Visit_Node): Indexed references can be uplevel if the type isn't
	static.
	(Unnest_Subprograms): Don't rewrite if no reference given.  If call has
	been relocated, set first_named pointer in original node as well.

From-SVN: r260830
2018-05-28 08:54:27 +00:00
Ed Schonberg
1541ede1e1 [Ada] Copy index expression trees rather than relocating them
2018-05-28  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_aggr.adb (Flatten): Copy tree of expression in a component
	association with a range or a set of discrete choices, rather than
	relocating the node. This avoids inconsistencies in the tree when
	handling nested subprograms with uplevel references for LLVM.

From-SVN: r260829
2018-05-28 08:54:18 +00:00
Arnaud Charlet
f167c73516 [Ada] Disregard alignment issues in CodePeer mode
2018-05-28  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* exp_util.adb (Possible_Bit_Aligned_Component): Always return False in
	codepeer mode.

From-SVN: r260828
2018-05-28 08:54:11 +00:00
Arnaud Charlet
7ddbf09d33 [Ada] Minor typo fix in exp_unst.adb
2018-05-28  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* exp_unst.adb: Fix typo.

From-SVN: r260827
2018-05-28 08:54:06 +00:00
Bob Duff
0ef5a02752 [Ada] Minor cleanup implementation of Ada.Containers.Vectors
2018-05-28  Bob Duff  <duff@adacore.com>

gcc/ada/

	* libgnat/a-convec.adb (Query_Element): Minor cleanup: remove an
	unnecessary use of 'Unrestricted_Access.

From-SVN: r260826
2018-05-28 08:54:01 +00:00
Hristian Kirtchev
24161618d2 [Ada] Crash on aspect/pragma Linked_Section with -gnatR2
This patch modifies the output of the representation information related to
aspect or pragma Linker_Section, achieved with compiler switch -gnatR2. The
value of the section argument is now properly retrieved. Previously it was
assumed that the value is always a N_String_Literal, however the semantics
of the annotation allow for any static string expression, including a
reference to a static string.

------------
-- Source --
------------

--  linker_sections.ads

package Linker_Sections is
   LS_1 : constant String := "1";
   LS_2 : constant String := "2" & "2";
   LS_3 : constant String := LS_1 & "3";
   LS_4 : constant String := "4" & LS_2;

   Val_1  : Integer with Linker_Section => LS_1;
   Val_2  : Integer with Linker_Section => LS_2;
   Val_3  : Integer with Linker_Section => LS_3;
   Val_4  : Integer with Linker_Section => LS_4;
   Val_5  : Integer with Linker_Section => LS_1 & "5";
   Val_6  : Integer with Linker_Section => LS_2 & "6";
   Val_7  : Integer with Linker_Section => LS_3 & "7";
   Val_8  : Integer with Linker_Section => LS_4 & "8";
   Val_9  : Integer with Linker_Section => "9"  & LS_1;
   Val_10 : Integer with Linker_Section => "10" & LS_2;
   Val_11 : Integer with Linker_Section => "11" & LS_3;
   Val_12 : Integer with Linker_Section => "12" & LS_4;

   Val_13 : Integer; pragma Linker_Section (Val_13, LS_1);
   Val_14 : Integer; pragma Linker_Section (Val_14, LS_2);
   Val_15 : Integer; pragma Linker_Section (Val_15, LS_3);
   Val_16 : Integer; pragma Linker_Section (Val_16, LS_4);
   Val_17 : Integer; pragma Linker_Section (Val_17, LS_1 & "5");
   Val_18 : Integer; pragma Linker_Section (Val_18, LS_2 & "6");
   Val_19 : Integer; pragma Linker_Section (Val_19, LS_3 & "7");
   Val_20 : Integer; pragma Linker_Section (Val_20, LS_4 & "8");
   Val_21 : Integer; pragma Linker_Section (Val_21, "9"  & LS_1);
   Val_22 : Integer; pragma Linker_Section (Val_22, "10" & LS_2);
   Val_23 : Integer; pragma Linker_Section (Val_23, "11" & LS_3);
   Val_24 : Integer; pragma Linker_Section (Val_24, "12" & LS_4);
end Linker_Sections;

-----------------
-- Compilation --
-----------------

$ gcc -c -gnatR2s linker_sections.ads

2018-05-28  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* repinfo.adb (Expr_Value_S): New routine.
	(List_Linker_Section): Properly extract the value of the section
	argument.

From-SVN: r260825
2018-05-28 08:53:54 +00:00
Patrick Bernardi
f5a9ad2577 [Ada] Update user manual for the -D binder switch
2018-05-28  Patrick Bernardi  <bernardi@adacore.com>

gcc/ada/

	* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Update the
	description of the -D binder switch to reflect current usage.
	* gnat_ugn.texi: Regenerate.

From-SVN: r260824
2018-05-28 08:53:49 +00:00
Gary Dismukes
6a890c589f [Ada] Minor reformatting
2018-05-28  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

	* exp_ch3.adb: Minor reformatting

From-SVN: r260823
2018-05-28 08:53:42 +00:00
Justin Squirek
341e0bb6c5 [Ada] Spurious constraint error on array of null-excluding components
This patch fixes an issue whereby the compiler would raise spurious runtime
errors when an array of null-excluding components was initialized with an
expression which required the secondary stack (such as with an concatination
operation) due to certain generated checks which were incorrected performed
on internal object declarations.

2018-05-28  Justin Squirek  <squirek@adacore.com>

gcc/ada/

	* exp_ch3.adb
	(Build_Initialization_Call): Add logic to pass the appropriate actual to match
	 new formal.
	(Init_Formals): Add new formal *_skip_null_excluding_check
	* exp_util.adb, exp_util.ads
	(Enclosing_Init_Proc): Added to fetch the enclosing Init_Proc from the current
	 scope.
	(Inside_Init_Proc): Refactored to use Enclosing_Init_Proc
	(Needs_Conditional_Null_Excluding_Check): Added to factorize the predicate
	 used to determine how to generate an Init_Proc for a given type.
	(Needs_Constant_Address): Minor reformatting
	* sem_res.adb
	(Resolve_Null): Add logic to generate a conditional check in certain cases

gcc/testsuite/

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

From-SVN: r260822
2018-05-28 08:53:36 +00:00