- 29 May, 2018 7 commits
-
-
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 -
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 -
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 -
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 -
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 -
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 -
From-SVN: r260856
GCC Administrator committed
-
- 28 May, 2018 33 commits
-
-
* 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 -
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 -
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 -
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 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 -
* doc/invoke.texi (ARM Options): Use @item instead of @itemx for armv5te. From-SVN: r260846
Jakub Jelinek committed -
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 -
2018-05-28 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * repinfo.ads: Minor fixes and tweaks in comments. From-SVN: r260844
Eric Botcazou committed -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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
Ed Schonberg committed -
2018-05-28 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_unst.adb (Unnest_Subprogram): Prevent creation of empty activation records. From-SVN: r260831
Ed Schonberg committed -
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
Richard Kenner committed -
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
Ed Schonberg committed -
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
Arnaud Charlet committed -
2018-05-28 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * exp_unst.adb: Fix typo. From-SVN: r260827
Arnaud Charlet committed -
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
Bob Duff committed -
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
Hristian Kirtchev committed -
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
Patrick Bernardi committed -
2018-05-28 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * exp_ch3.adb: Minor reformatting From-SVN: r260823
Gary Dismukes committed -
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
Justin Squirek committed -
2018-05-28 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * exp_aggr.adb, gnatlink.adb, sem_ch6.adb, sem_res.adb, sem_util.adb: Minor reformatting. From-SVN: r260821
Hristian Kirtchev committed -
This patch modifies the analysis of aspect/pragma Volatile to correct accept the annotation when it applies to single protected and single task types, and SPARK_Mode On is in effect. ------------ -- Source -- ------------ -- pack.ads package Pack with SPARK_Mode is protected PO_Aspect with Volatile is end; -- OK protected PO_Pragma is end; pragma Volatile (PO_Pragma); -- OK task TO_Aspect with Volatile; -- OK task TO_Pragma; pragma Volatile (TO_Pragma); -- OK end Pack; ---------------------------- -- Compilation and output -- ---------------------------- $ gcc -c pack.ads $ gcc -c pack.ads -gnatd.F cannot generate code for file pack.ads (package spec) 2018-05-28 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * sem_prag.adb (Process_Atomic_Independent_Shared_Volatile): Include the declarations of single concurrent types because they fall in the category of full type and object declarations. From-SVN: r260820
Hristian Kirtchev committed -
This changes the output of -gnatR for extensions of tagged record types to avoid displaying the internal _Parent component, which overlaps with other components and is thus more confusing than helpful. For the following hierarchy: type R1 is tagged record I : Integer; end record; type R2 is new R1 with record C : Character; end record; the output -gnatR must now be: for R1'Object_Size use 128; for R1'Value_Size use 96; for R1'Alignment use 8; for R1 use record _Tag at 0 range 0 .. 63; I at 8 range 0 .. 31; end record; for R2'Object_Size use 192; for R2'Value_Size use 136; for R2'Alignment use 8; for R2 use record _Tag at 0 range 0 .. 63; I at 8 range 0 .. 31; C at 16 range 0 .. 7; end record; 2018-05-28 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * repinfo.adb (Compute_Max_Length): Skip _Parent component. (List_Record_Layout): Likewise. From-SVN: r260819
Eric Botcazou committed
-