Re: [Ada] Fix PR ada/78845

2016-12-21 Thread Arnaud Charlet
> >> 2016-12-17 Simon Wright > >> > >>PR ada/78845 > >>* a-ngrear.adb (Inverse): call Unit_Matrix with First_1 set to > >>A'First(2) > >>and vice versa. > > > > Patch is OK, thanks. > > The same problem exists in Ada.Numerics.Generic_Complex_Arrays > (a-congar.adb). Should I u

Re: [Ada] Fix PR ada/78845

2016-12-20 Thread Arnaud Charlet
> The function Ada.Numerics.Generic_Real_Arrays.Inverse is required > (ARM G.3.1(72)) to return a matrix with the bounds of the dimension indices > swapped, i.e. result'Range(1) == input'Range(2) and vice versa. The > present code gets result'Range(1) correct, but result'Range(2) always > starts at

Re: [ada, testsuite] Parallelize check-gnat

2016-10-21 Thread Arnaud Charlet
> Ok for mainline (and eventually for 5 and 6 branches given the small > size and low risk of the patch)? I'm not familiar with lang_checks_parallelized, but that's OK with me on principle. Arno

[Ada] Pragmas Compile_Time_Error and Compile_Time_Warning and 'Size

2016-10-13 Thread Arnaud Charlet
Extend the functionality of pragmas Compile_Time_Warning and Compile_Time_ Error to use statically known values of attributes 'Size and 'Alignment. For example: procedure do_test is generic type ParamType is private; package Gen is pragma Compile_Time_Error (ParamType'Size

[Ada] Missing predicate check with explicit policy pragma

2016-10-12 Thread Arnaud Charlet
This patch fixes an omission in the generation of predicate checks, when there is a configuration pragma that sets Assertion_Policy to Ignore and a subsequent configuration pragma that enables predicate checking. Executing: gnatmake -q main main must yield raised SYSTEM.ASSERTIONS.ASSERT_

[Ada] Premature finalization of controlled array component

2016-10-12 Thread Arnaud Charlet
This patch modifies the processing of transient array components to properly handle the finalization of the temporary controlled function result when the call initializes a component choice list or an "others" choice. -- Source -- -- aggregates.adb with Ada.Strings.Unb

[Ada] Spurious error on renaming of type conversion with invariant.

2016-10-12 Thread Arnaud Charlet
This patch fixes a spurious error on a renaming of a conversion of the designated object of a pointer to class-wide type when the target type has an invariant aspect. The following must execute quietly: gnatmake -gnata -q main main --- with System.Assertions; use System.Assertions; with Gd

[Ada] Allow Refined_Global/Depends contracts with partial refinement

2016-10-12 Thread Arnaud Charlet
Pragmas/aspects Refined_Global and Refined_Depends may be applied in a scope where only partial refinement of abstract states is visible, as defined in SPARK RM 7.2.4. In such a case, the partial refinement should be used instead of the full refinement for checking the refined contracts. Tested on

[Ada] Spurious use visibility with limited with and child packages

2016-10-12 Thread Arnaud Charlet
This patch corrects a minor issue whereby declarations that occur immediately within package P are erroneously treated as potentially use-visible when a parent package has a limited with clause on P, a child package has a with clause on P, and the child package is a client of another unit. --

[Ada] Crash on overloaded function call with limited view

2016-10-12 Thread Arnaud Charlet
This patch fixes a compiler abort on a call that is initially overloaded, when the resolved function returns the limited view of a type. The folllowing must compile quietly: gcc -c p.adb --- with R; package body P is function Get (A : Q.Ptr) return Integer is begin return R.Conv

[Ada] Illegal overriding indicators not flagged for procedure named Initialize

2016-10-12 Thread Arnaud Charlet
In cases of dispatching operations with names Initialize, Adjust, and Finalize that will override an inherited procedure at the point of the full type but not at their point of declaration, the compiler was not properly flagging an overriding_indicator on such a procedure as illegal, because proced

[Ada] Renaming of functions to check file's readability/writability

2016-10-12 Thread Arnaud Charlet
Old functions to check readability/writability of file based on file's attributes had been replaced by new more precise functions. Old functions are provided under new names. Tested on x86_64-pc-linux-gnu, committed on trunk 2016-10-12 Vadim Godunko * s-os_lib.ads (Is_Owner_Readable_F

[Ada] Preliminary work to support relative delays on extended ravenscar

2016-10-12 Thread Arnaud Charlet
Tested on x86_64-pc-linux-gnu, committed on trunk 2016-10-12 Tristan Gingold * exp_ch9.adb (Expand_N_Delay_Relative_Statement): Add support for a secondary procedure in case of missing Ada.Calendar.Delays * rtsfind.ads (RTU_Id): Add System_Relative_Delays. (RE_I

[Ada] Create a new internal profile

2016-10-12 Thread Arnaud Charlet
This new profile is not user visible and is the base to switch to the restricted tasking runtime. It replaces the Restricted profile for that purpose and is weaker than it. The Restricted profile remains unchanged. The purpose of that change is to lift some restrictions of the GNAT_Extended_Ravens

[Ada] Spurious errors on instances of formal packages with defaults.

2016-10-12 Thread Arnaud Charlet
This patch fixes spurious errors on instantiations of formal packages that have defaulted formals that include tagged private types and array types. The following must compile quietly: gcc -c lis3dsh_spi.ads --- with SPI_Bus_Driver; with LIS3DSH; package LIS3DSH_SPI is new LIS3DSH (IO => SPI

[Ada] Call memmove instead of memcpy in more cases

2016-10-12 Thread Arnaud Charlet
This changes the logic of Is_Non_Local_Array to return true for anything that is not a component or a slice of a local entity, for example a dereference, so as to generate a call to memmove instead of memcpy in more cases, e.g.: package P is type String_Access is access all String; type Rec1

Re: [PING][PATCH 3/4][Ada,DJGPP] Ada support for DJGPP

2016-10-11 Thread Arnaud Charlet
> I'd like to ping patch > > https://gcc.gnu.org/ml/gcc-patches/2016-09/msg00164.html > > Additional comments about using ZCX_By_Default := true are in > https://gcc.gnu.org/ml/gcc-patches/2016-09/msg00845.html Well this patch doesn't inspire lots of confidence since the initial version had the

Re: [PING][PATCH 1/4][Ada,DJGPP] Ada support for DJGPP

2016-10-11 Thread Arnaud Charlet
> I'd like to ping this patch. > > Last version of the patch together with Changelog entry can be found in > mailing list archive: > > https://gcc.gnu.org/ml/gcc-patches/2016-08/msg01229.html This patch isn't OK, we don't want to add such special case in s-os_lib.adb Arno

Re: [PATCH 4/4][Ada,DJGPP] Ada support for DJGPP

2016-10-10 Thread Arnaud Charlet
> >> int > >> __gnat_get_maximum_file_name_length (void) > >> { > >>+#if defined (__DJGPP__) > >>+ return (_use_lfn(".")) ? -1 : 8; > >>+#else > >>return -1; > >>+#endif > >> } > >Is the above change really necessary? Would be nice to get rid of this > >extra code. The rest looks OK to me.

Re: Implement -Wimplicit-fallthrough (version 9)

2016-09-26 Thread Arnaud Charlet
> this patch caused quite some breakage: Ada, Solaris/x86 and SPARC don't > bootstrap any longer. > > The following patch allows i386-pc-solaris2.12 and > sparc-sun-solaris2.12 > bootstraps continue. > > Strangely, I needed to use gcc_fallthrough () in i386.c; a mere /* FALLTHRU > */ > had no ef

Re: [PATCH 4/4][Ada,DJGPP] Ada support for DJGPP

2016-09-25 Thread Arnaud Charlet
> >Is the above change really necessary? Would be nice to get rid of this > >extra code. The rest looks OK to me. > It is required for support of environment when LFN support is either > not available or disabled for some reason (for example FreeDOS > without LFN support loaded). Does it matter fo

Re: [PATCH 4/4][Ada,DJGPP] Ada support for DJGPP

2016-09-25 Thread Arnaud Charlet
> int > __gnat_get_maximum_file_name_length (void) > { > +#if defined (__DJGPP__) > + return (_use_lfn(".")) ? -1 : 8; > +#else >return -1; > +#endif > } Is the above change really necessary? Would be nice to get rid of this extra code. The rest looks OK to me. Arno

Re: [PATCH 3/4][Ada,DJGPP] Ada support for DJGPP

2016-09-04 Thread Arnaud Charlet
> GCC Ada compiler itself uses exceptions. Yes, but the bootstrap doesn't use system-dgjpp.ads, it uses the generic system.ads which uses front-end (GNAT) SJLJ, hence my question. Your answer isn't very reassuring. Arno

Re: [PATCH 2/4][Ada,DJGPP] Ada support for DJGPP

2016-09-04 Thread Arnaud Charlet
This patch is OK > From 83fe70a17d811ebdec7ca70509e3c2521657d8f2 Mon Sep 17 00:00:00 2001 > From: Andris Pavenis > Date: Sun, 28 Aug 2016 08:02:11 +0300 > Subject: [PATCH 2/4] [DJGPP, Ada] DJGPP support > > * ada/ctrl_c.c: Do not use macro SA_RESTART for DJGPP. > > * ada/gsocket.h: Do not suppo

Re: [PATCH 4/4][Ada,DJGPP] Ada support for DJGPP

2016-09-04 Thread Arnaud Charlet
> >This last patch (4/4) contains DJGPP related changes to adaint.c > >(except one which belongs to patch 1/4). This patch is quite intrusive. Are all these changes really needed? > char > __gnat_get_default_identifier_character_set (void) > { > +#if defined (__DJGPP__) > + return 'p'; > +#el

Re: [PATCH 3/4][Ada,DJGPP] Ada support for DJGPP

2016-09-04 Thread Arnaud Charlet
> On 08/25/2016 12:46 PM, Arnaud Charlet wrote: > >Which exception handling mechanism is used by the DJGPP port? > >Is it (GCC) SJLJ? > No. Updated to set ZCX_By_Default := true for DJGPP. Well I'm confused now. How could this work before? In other words, has the target r

Re: [PATCH 3/4][Ada,DJGPP] Ada support for DJGPP

2016-08-25 Thread Arnaud Charlet
Which exception handling mechanism is used by the DJGPP port? Is it (GCC) SJLJ? Arno

Re: [PATCH 2/4][Ada,DJGPP] Ada support for DJGPP

2016-08-25 Thread Arnaud Charlet
> -#if defined (__MINGW32__) > +#if defined (__DJGPP__) > + > +/* FIXME: this is draft version only. Fix me if that is not correct */ > +/*or not complete (AP) */ This FIXME needs to be addressed. The rest of the patch is OK. Arno

Re: [Patch] Disable text mode translation in ada for Cygwin

2016-08-25 Thread Arnaud Charlet
Patch is OK

Re: Implement -Wimplicit-fallthrough (take 3)

2016-08-19 Thread Arnaud Charlet
> > > > Does this warning make sense if !(lang_GNU_C() || lang_GNU_CXX()) ? > > > > > > I don't think so, it's meant for C/C++ only. I added a better check. > > > > Well, maybe the warning could also work for ObjC and ObjC++, but since I > > haven't included any testcases for these languages so

Re: [Patch] Disable text mode translation in ada for Cygwin

2016-08-19 Thread Arnaud Charlet
> > Text mode translation should not be done for Cygwin, especially since it > > does not > > support unicode setmode calls. This also fixes ada builds for Cygwin. > > > > OK for trunk? > > Ping? Can you send the link to your original submission for easy retrieval? Arno

Re: [PATCH 3/4][Ada,DJGPP] Ada support for DJGPP

2016-08-18 Thread Arnaud Charlet
> 2016-07-30 Andris Pavenis > > * ada/gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS): Define for > DJGPP target > (EH_MECHANISM): Define to -gcc for DJGPP > * ada/system-djgpp.ads: New file > > Andris > +++ b/gcc/ada/system-djgpp.ads > @@ -0,0 +1,148 @@ > +--

Re: [PATCH 2/4][Ada,DJGPP] Ada support for DJGPP

2016-08-18 Thread Arnaud Charlet
> This patch (2nd of 4) includes various changes to Ada related C files > required for DJGPP support > > ChangeLog entry: > > 2016-07-30 Andris Pavenis > > * ada/ctrl_c.c: Do not use macro SA_RESTART for DJGPP. > > * ada/gsocket.h: Do not support sockets for DJGPP. > > * ada/init.

Re: [PATCH 1/4][Ada,DJGPP] Ada support for DJGPP

2016-08-13 Thread Arnaud Charlet
>>> * ada/adaint.c (__gnat_is_djgpp): define (1 for DJGPP host, 0 >>> otherwise). * ada/s-os_lib.ads (Is_Djgpp): import __gnat_is_djgpp as >>> constant. * ada/s-os_lib.adb (Normalize_Pathname): support DJGPP special >>> paths (/dev/*) for DJGPP hosts >> The patch does more than this though: >

Re: [PATCH 1/4][Ada,DJGPP] Ada support for DJGPP

2016-07-31 Thread Arnaud Charlet
> > Frankly at this stage, I do not think it makes sense to maintain an > > Ada port for DJGPP and in particular maintain all these extra > > special cases and #ifdefs. > > I don't think this is a reasonable attitude to take with people who > are willing to do the work to do it. OK, let me reform

Re: [PATCH 1/4][Ada,DJGPP] Ada support for DJGPP

2016-07-30 Thread Arnaud Charlet
Frankly at this stage, I do not think it makes sense to maintain an Ada port for DJGPP and in particular maintain all these extra special cases and #ifdefs. How many users are we talking about here? Arno > This is first of 4 patches for DJGPP support of Ada compiler > > Patch adds support of ha

Re: [patch] Get rid of stack trampolines for nested functions

2016-07-21 Thread Arnaud Charlet
Jeff, > So just to be clear, once installed, for Ada we'll start using the > descriptor based scheme on the subset of targets below, which will > be an ABI change, right? Right. > If so and this goes in, we'll have to make sure to signal loud and > wide about the ABI change at the project level

[Ada] Clarify the semantics of -gnatn switch

2016-07-07 Thread Arnaud Charlet
This change is aimed at clarifying the semantics of the -gnatn switch, both in the code and in the documentation. In particular, it makes it explicit that -gnatn only pertains to inter-unit inlining (inlining across modules) and has no effect on intra-unit inlining (inlining within a given module)

[Ada] Spurious errors on inherited class-wide preconditions

2016-07-07 Thread Arnaud Charlet
This patch fixes some spurious errors arising when class-wide preconditions in an generic instance are overridden in a child instance. The following must compile quietly: gcc -c r.ads --- generic package P is type T1 is abstract tagged private; procedure P1 (This : in out T1) with

[Ada] Extra precision in the evaluation of non-static expressions

2016-07-06 Thread Arnaud Charlet
This patch prevents the use of arbitrary-precision computations when an expression consists of known numeric literals but one of them is not static by the rules of the language but happens to be known to the compiler through data-flow. The patch introduces a conversion to a machine number for the e

[Ada] Spurious error on withed Ghost unit

2016-07-06 Thread Arnaud Charlet
This patch modifies the front end to prevent the generation of ALI and object files as well as bypass the back end and suppress any errors related to code generation when the compilation unit is ignored Ghost. -- Source -- -- ignore.adc pragma Assertion_Policy (Ghost =

[Ada] Missing abort deferral on controlled aggregate component assignment

2016-07-06 Thread Arnaud Charlet
This patch adds an abort defer / undefer pair around the initialization statements of a controlled aggregate component as dictated by 9.8 11. -- Source -- -- aggregates.ads with Ada.Finalization; use Ada.Finalization; package Aggregates is type Ctrl is new Controll

[Ada] Spurious error on container instantiation with predicated array type

2016-07-06 Thread Arnaud Charlet
This patch fixes a spurious type error in a predicate function created within an operation in an instantiation of a container package, when the element type is an unconstrained array with a predicate. The following must compile quietly gcc -c gpr2-project-registry-attribute.adb --- with Ada.

[Ada] Warning on fixed-point actual types with user-defined operators

2016-07-06 Thread Arnaud Charlet
This patch adds aa warning when a formal fixed point type is instantiated with a type that has a user-defined arithmetic operations, but the generic has no corresponding formal functions. This is worth a warning because of the special semantics of fixed-point operators, in particular multiplying op

[Ada] Gnatfind crash on references to unknown files

2016-07-04 Thread Arnaud Charlet
This patch fixes an obscure bug in gnatfind that could cause it to crash on references to unknown files. The crash was caused by dereferencing an uninitialized pointer value, so it was flaky. No test is available. Tested on x86_64-pc-linux-gnu, committed on trunk 2016-07-04 Bob Duff *

[Ada] Spurious type errors because of views confusion in predicate functions

2016-07-04 Thread Arnaud Charlet
In the context of a predicate function the formal and the actual in a call may have different views of the same type, because of the delayed analysis of predicates aspects. This patch extends existing code that handles this discrepancy, to cover private and full views as well. Executing the follow

[Ada] Use chained locations in GNATprove for inherited pre and post

2016-07-04 Thread Arnaud Charlet
When a class-wide pre- or postcondition is inherited by an overriding subprogram, the locations of the inherited pragma and of its expression are the same as the locations of the original pragma. This is inconvenient to distinguish properties proved on the overridden and the overriding subprograms.

[Ada] Confusing pragma unreferenced

2016-07-04 Thread Arnaud Charlet
Two pragmas exist - Unmodified and Unreferenced which issue warnings if the respective entities contained get written or read repectivly. Additionally, pragma Unreferenced will surpress compiler generated warnings for unread variables. However, this can lead to confusion about pragma Unreferenced w

[Ada] Early finalization of ctrl func result clobbers array element

2016-07-04 Thread Arnaud Charlet
This match modifies the expansion of array aggregates to perform in-place side effect removal when a controlled function call acts as an initialization expression. This eliminates the transient property of the function call and ensures the proper order of copy, adjustment, and finalization. --

Re: [Patch] Disable text mode translation in ada for Cygwin

2016-07-01 Thread Arnaud Charlet
> Text mode translation should not be done for Cygwin, especially since it > does not > support unicode setmode calls. This also fixes ada builds for Cygwin. > > OK for trunk? OK, thanks. >>> >>> Can someone please commit this? I don't have SVN write access. >>> >

[Ada] Crash on config pragma Component_Alignment

2016-06-22 Thread Arnaud Charlet
Pragma Component_Alignment was not implemented properly and caused a crash when used in a configuration file due to how it was applied via the scope table. This patch correctly identifies this case and uses a global variable Configuration_Component_Alignment to capture the value set during configur

[Ada] Analysis of pragmas containing integer expressions not verified properly

2016-06-22 Thread Arnaud Charlet
If a string is used as an argument instead of an integer, Check_Arg_Is_OK_Static_Expression with Any_Integer will falsely verify causing the compiler to halt compilation when the caller acts on the assumption that it was verified. This patch creates checks so that Any_Integer works properly and doc

[Ada] Spurious error on derived type with unknown discriminants and predicate

2016-06-22 Thread Arnaud Charlet
This patch fixes a spurious error on an instantiation of an unbounded container, when the element type is a private type with unknown discriminants, derived from an array subtype with a predicate aspect. The following must ocmpile quietly: gcc -c gpr2-attribute.adb --- package GPR2 is sub

[Ada] Independent tasks and the Fall_Back_Handler

2016-06-22 Thread Arnaud Charlet
This patch fixes a bug in which if a Fall_Back_Handler is installed for the environment task, independent tasks will call it. The following test should run quietly: with Ada.Text_IO; package body Debug is protected body Dbg is procedure Termination (Cause : in Task_Termination.

[Ada] Improve and unify warning machinery for address clauses

2016-06-22 Thread Arnaud Charlet
This change moves the rest of the warning machinery for address clauses to Validate_Address_Clauses, ensuring that all the variants are issued from it. This affects only absolute address clauses in practice, i.e. address clauses of the form for I'Address use To_Address (16#_#) and variants

[Ada] New implementation of Ada.Containers.Unbounded_Priority_Queues

2016-06-22 Thread Arnaud Charlet
This patch uses O(lg N) algorithms for Unbounded_Priority_Queues. No expected change in behavior; no test available. Tested on x86_64-pc-linux-gnu, committed on trunk 2016-06-22 Bob Duff * a-cuprqu.ads, a-cuprqu.adb: Completely rewrite this package. Use red-black trees, which

[Ada] Crash on illegal expression in context with predicate

2016-06-22 Thread Arnaud Charlet
This patch fixes a compiler abort on a return statement for a function whose type is a derived type with a dynamic predicate, when the return expression has the parent type. Compiling gpr2-attribute.adb must yield: gpr2-attribute.adb:8:14: expected type "Qualified_Name" defined at gpr

[Ada] New debug switch -gnatd.o

2016-06-22 Thread Arnaud Charlet
This patch causes -gnatd.o to choose a more conservative elaboration order. The following test should compile and run quietly. gnatmake -q -f -gnatd.o -g -O0 elab_indirect_2-main -bargs -p -ws with Elab_Indirect; with Elab_Indirect.Child; package body Elab_Indirect_2 is procedure P is begi

[Ada] Spurious error with predicate on type derived from unconstrained array

2016-06-22 Thread Arnaud Charlet
This patch fixes a spurious error on the compilation of a subprogram whose formal parameter is derived from an unconstrained array type with a dynamic predicate aspect. The following must compile quietly: gcc -c gpr2-attribute.adb gcc -c -gnata gpr2-attribute.adb --- package GPR2 is su

[Ada] Reimplementation of type invariants

2016-06-20 Thread Arnaud Charlet
This patch prevents the insertion of the invariant procedure declaration and body when the context is a generic unit. This ensures that generated code does not permiate the template. -- Source -- -- tester.ads package Tester is type Type_Id is (Ext_1_Id,

[Ada] Adapt treatment of inherited classwide pre/post to GNATprove

2016-06-20 Thread Arnaud Charlet
In GNATprove mode, inherited classwide pre/post are copied to the overriding subprogram declaration, so that GNATprove can find them to verify Liskov Substitution Principle on SPARK code. The copied pre/post are not turned into pragma checks anymore in GNATprove mode, so that they are added to the

[Ada] Always consider Linker_Options from package System

2016-06-20 Thread Arnaud Charlet
On full runtimes, this was always the case. On restricted one, force system to be in the closer of the program. No test for full runtimes (as no behaviour change). Tested on x86_64-pc-linux-gnu, committed on trunk 2016-06-20 Tristan Gingold * make.adb (Check_Standard_Library): Consid

[Ada] Handling of all-digits host names

2016-06-20 Thread Arnaud Charlet
In Get_Host_By_Name, do not treat a strings consisting of digits only as an IP address whose lookup should actually be done using Get_Host_By_Address. Tested on x86_64-pc-linux-gnu, committed on trunk 2016-06-20 Thomas Quinot * g-socket.adb (Is_IP_Address): A string consisting in digi

[Ada] Missing errors on illegal expressions for entry pre/postconditions

2016-06-16 Thread Arnaud Charlet
This patch adds checks on the expressions of pre/postconditions for task and protected entries, prior to their full analysis, so that errors are properly emitted in various compiler modes. Tested by ACATS 4.0L: B611008 Tested on x86_64-pc-linux-gnu, committed on trunk 2016-06-16 Ed Schonberg

[Ada] Missing finalization of controlled build-in-place function result

2016-06-16 Thread Arnaud Charlet
This patch modifies the finalization machinery to recognize a controlled deferred constant initialized by means of a build-in-place function call as requiring finalization actions. -- Source -- -- types.ads private with Ada.Finalization; package Types is type T (<>

[Ada] Fix minor memory leak in GNAT.Command_Line

2016-06-16 Thread Arnaud Charlet
When a new switch is defined with a specific name for its parameter, that name is not freed. This is a minor leak, since such switches are in general defined once at the beginning of the program, and never modified afterwards. Detected with valgrind. Tested on x86_64-pc-linux-gnu, committed on tru

[Ada] Use System.Priority to validate pragma Priority value for subprogram.

2016-06-16 Thread Arnaud Charlet
This fixes a corner case for pragma Priority (0) set on the main subprogram. Does not affect usual platforms. Tested on x86_64-pc-linux-gnu, committed on trunk 2016-06-16 Tristan Gingold * sem_prag.adb (Analyze_Pragma): Simplify code for Pragma_Priority. Index: exp_aggr.adb =

[Ada] Avoid anonymous array object for aggregates with qualified expressions

2016-06-16 Thread Arnaud Charlet
This patch enhances the memory usage of object declarations initialized by a qualified array aggregate. Previously, as per RM 4.3(5), an anonymous object was created to capture the value of the array aggregate, effectively doubling the memory consumption. The changes above remove the anonymous obje

[Ada] Warn on buffer overrun with complex overlay

2016-06-16 Thread Arnaud Charlet
This change improves the warning issued for buffer overruns caused by overlays where the underlying object is too small, by taking into account the offset of the overlaid object from the first bit of the underlying object. The effect is visible on the following package: 1. with Interfaces; u

[Ada] Improve the support of No_Use_Entity

2016-06-16 Thread Arnaud Charlet
This patch performs a code cleanup of the previous implementation and extends its functionality to facilitate the use of this restriction with entities of the Ada83 package Text_IO. For example: pragma Restrictions (No_Use_Of_Entity => Text_IO.Put_Line); with Text_IO; use Text_IO; procedure Restr

[Ada] Exclude private protected type defined in the runtime for restrictions

2016-06-16 Thread Arnaud Charlet
This is preliminary work to allow an implementation change in the runtime. Does not affect users. Tested on x86_64-pc-linux-gnu, committed on trunk 2016-06-16 Tristan Gingold * einfo.ads (Has_Protected): Clarify comment. * sem_ch9.adb (Analyze_Protected_Type_Declaration): Do n

[Ada] Remove useless calls to invariant procedures

2016-06-14 Thread Arnaud Charlet
This patch removes a redundant call to a generated invariant procedure when Assertion_Policy is ignored. The following must execute quietly: gcc -c -gnatn -O3 -S ut.adb grep "invariant" ut.s --- pragma Assertion_Policy (Ignore); --- private with TI; package UT is type T2 is limited private;

[Ada] Improve error message on Extensions_Visible

2016-06-14 Thread Arnaud Charlet
This patch changes the formatting of errors related to the pragma Extensions_Visible so as not to suggest Extensions_Visible applies to a formal parameters instead of a subprogram when SPARK RM 6.1.7(3) is violated. In addition, a small change to sem_prag was made to make the printing of boolean

[Ada] Missing error on formal package

2016-06-14 Thread Arnaud Charlet
This patch fixes an omission in the analysis of formal package declarations. Actuals in the instance are properly rejected if their name does not correspond to any of the actuals, and there are box associations for existing formals. Compiling gcc -c c_test.ads must yield generic_p_level_2

[Ada] Fix handling of separate units in GNATprove cross references

2016-06-14 Thread Arnaud Charlet
The collect of cross references for computing effects of subprograms in GNATprove was done incorrectly in the case of separate units. This is now fixed, by bypassing subunits when computing the unit of interest for both scopes and cross references. Tested on x86_64-pc-linux-gnu, committed on trunk

Re: [PATCH] Fix PR ada/71358

2016-06-01 Thread Arnaud Charlet
> This fixes a minor problem where GNAT.Command_Line.Getopt raises CE if > there are in fact no program-specified options (only the > internally-supplied -h, --help are meant to be available). > > Tested on GCC 6.1.0, x86_64-apple-darwin15. > > If OK, can someone commit it (I can't). > > gcc/ada

Re: [Patch] Disable text mode translation in ada for Cygwin

2016-05-26 Thread Arnaud Charlet
> Text mode translation should not be done for Cygwin, especially since it > does not > support unicode setmode calls. This also fixes ada builds for Cygwin. > > OK for trunk? OK, thanks. > gcc/ada/ChangeLog: > * sysdep.c (__gnat_set_binary_mode, __gnat_set_text_mode, > __gnat_set_mo

Re: Please include ada-hurd.diff upstream (try2)

2016-05-04 Thread Arnaud Charlet
> 2016-05-04 Samuel Thibault > > * s-osinte-gnu.ads: Make Get_Page_Size return int, and make it use > getpagesize instead of __getpagesize. > > --- a/src/gcc/ada/s-osinte-gnu.ads > +++ b/src/gcc/ada/s-osinte-gnu.ads > @@ -344,10 +344,9 @@ package System.OS_Interface is > -- returns the st

Re: [ada, build] Fix make install-gcc-specs with empty GCC_SPEC_FILES

2016-05-02 Thread Arnaud Charlet
> Installing gcc 6.1.0 on Solaris 10 with /bin/ksh failed for > install-gcc-specs (I'd already seen that for 5.1.0, but forgotten about > it): > > make[3]: Entering directory `/var/gcc/gcc-6.1.0/10-gcc-gas/gcc/ada' > for f in ; do \ > cp -p /vol/src/gnu/gcc/gcc-6.1.0/gcc/ada/$f \ >

[Ada] Crash on illegal allocator for limited type.

2016-05-02 Thread Arnaud Charlet
This patch fixes a compiler crash on an allocator for an object of a limited type, when the expression of the qualified expression is a type conversion. Compiling bug1.adb must yield: bug1.adb:29:08: illegal expression for initialized allocator of a limited type (RM 7.5 (2.7/2)) --- pragma Ada_

[Ada] Remove spurious accessibility check for aggregate component

2016-05-02 Thread Arnaud Charlet
This patch removes an accessibility check that was improperly applied, via a type conversion, to an an operand that is an access parameter that also requires a non-null check. Test in ACATS 4.0K C3A0030. Tested on x86_64-pc-linux-gnu, committed on trunk 2016-05-02 Ed Schonberg * sem_

[Ada] Speed up memory management

2016-05-02 Thread Arnaud Charlet
This patch speeds up "new" and Unchecked_Deallocation in simple cases. No change in behavior; no test available. Tested on x86_64-pc-linux-gnu, committed on trunk 2016-05-02 Bob Duff * s-memory.adb (Alloc, Realloc): Move checks for Size = 0 or size_t'Last into the Result = Sys

[Ada] Crash on inlined call to subprogram declared in package instance

2016-05-02 Thread Arnaud Charlet
This patch fixes a compiler crash on an inlined call in a nested instantiation when the corresponding generic unit has aspect specifications. The following must compile quietly: gcc -c inst.ads -gnatn -O --- with Pointer; package Inst is package I is new Pointer (Integer); end; --- package

[Ada] Minimize internally built wrappers of protected types

2016-05-02 Thread Arnaud Charlet
This patch minimizes the generation of wrappers of protected type dispatching primitives since they may cause reporting spurious ambiguity in correct code. After this patch the following test compiles without errors: package Ambig is type Lim_Iface is limited interface; type Prot is synchro

[Ada] Optimization of anonymous access-to-controlled types

2016-05-02 Thread Arnaud Charlet
This patch modifies the creation of finalization masters for anonymous access- to-controlled types. Prior to this change, each compilation unit utilized a single heterogeneous finalization master to service all allocations where the associated type is anonymous access-to-controlled. This patch remo

[Ada] Handling of attribute definition clauses for ASIS with GNSA

2016-05-02 Thread Arnaud Charlet
This patch introduces new switch -gnatd.H to enabled ASIS_GNSA mode. When active, this mode disabled the call to gigi. In addition, the patch suppresses various error checks with respect to attribute definition clauses in ASIS mode. -- Source -- -- clauses.ads package

[Ada] Predicate checks when Assertion policy is Ignore

2016-05-02 Thread Arnaud Charlet
This patch implements the proper semantics of predicated subtypes in various contexts when the assertion policy is Ignore. This affects the semantics of case constructs and object declarations when values that do not satisfy the predicate are present. Tested in ACATS 4.0J tests C54003 and C457005

[Ada] Undefined symbol with interface types

2016-05-02 Thread Arnaud Charlet
Compiling with optimizations enabled the linker may report undefined symbols of the form "xxxTs" associated with types that implement interface types. This issue was introduced on 2016-01-16 as part of improving the support of subprograms that are inlined across units with optimization. No small r

[Ada] Correctly set Last when calling Text_IO.Get_Line on empty string

2016-05-02 Thread Arnaud Charlet
Ada RM requires that procedure Text_IO_Get_Line sets Last to Item'First - 1 when parameter Item is the empty string, which was not performed until now. Tested on x86_64-pc-linux-gnu, committed on trunk 2016-05-02 Yannick Moy * a-tigeli.adb (Get_Line): Always set Last prior to returnin

[Ada] Fix Ada.Directories.Delete_Tree not to change current directory

2016-05-02 Thread Arnaud Charlet
... which is very unfriendly to tasking programs, where a task running Delete_Tree could cause a unexpected change of current directory in another task running concurrently. The program below is expected to display No directory change observed -- with Ada.Text_IO; use Ada.Text_IO; with Ada.Di

[Ada] Representation information for nested subprograms

2016-05-02 Thread Arnaud Charlet
With this patch the representation information generated with the -gnatR compilation switch includes information on subprograms nested within subprogram bodies. Executing gcc -c -gnatRm p.adb must yield; --- Representation information for unit P (body) procedure inner declared at p.adb:9:1

[Ada] Error in handling of convention of formal parameter

2016-05-02 Thread Arnaud Charlet
This patch fixes an error in the determination of the convention to be used for a formal parameter, when the corresponding type carries a convention pragma. Executing: gcc -c p.ads -gnatRm must yield: Representation information for unit P (spec) for Rec'Size use 1024; for Rec'Alignment use 1;

[Ada] Race condition in allocator with finalization

2016-05-02 Thread Arnaud Charlet
This patch fixes a race condition in an allocator for a type that needs finalization. The race condition is unlikely to occur in practice; it occurs when the allocator is in a Finalize that occurs after the corresponding master has already started its finalization. Finalize operations often dealloc

[Ada] Spurious error on container "of" loop

2016-05-02 Thread Arnaud Charlet
This patch modifies the implementation of container indexing to inspect the base type of the container in case the container is a subtype. No simple reproducer found. Tested on x86_64-pc-linux-gnu, committed on trunk 2016-05-02 Hristian Kirtchev * sem_ch4.adb (Find_Indexing_Operations

[Ada] Fix bug on Get_Line when incomplete last line in file

2016-05-02 Thread Arnaud Charlet
It may occur in some occasions that Get_Line incorrectly sets its Last parameter to one past the correct value. This can only occur when the line being copied is the last line of the file, and does not contain the newline character. Tested on x86_64-pc-linux-gnu, committed on trunk 2016-05-02 Ya

[Ada] Legality check of classwide Pre/Postcondition aspect

2016-04-27 Thread Arnaud Charlet
This patch verifies that classwide Pre/Postconditions cannot be applied to an operation of an untagged synchronized type, given that these are not primitive operations of a tagged type. Tested in ACATS b611007. Tested on x86_64-pc-linux-gnu, committed on trunk 2016-04-27 Ed Schonberg

[Ada] Informational messages that are not warnings

2016-04-27 Thread Arnaud Charlet
Previously, an informational message that was not a warning was treated as an error. This patch changes that, so such an informational message is not an error. There are no such messages in the compiler, so no test is available. This patch is mainly for use by SPARK, which wants to have information

[Ada] Spurious error on variable in private child package body

2016-04-27 Thread Arnaud Charlet
This patch modifies the contract freezing mechanism to suppress freezing when the trigger is the body of an instantiated package. This effectively prevents a spurious attempt to freeze because a) the body instantiation pass does not have all semantic information and b) freezing has already taken pl

[Ada] Detect singular matrices in Solve primitives for vectors and matrices.

2016-04-27 Thread Arnaud Charlet
This patch detects cases when the determinant of a system of equations is exactly Zero, and raises the proper exception, as mandated by RN G.3.2 (68/2) and G.3.2 (89/2). Executing the following: gnatmake -q debug_solve.adb debug_solve must yield: System is: 1.0E+00 x_1 + 0.0E+00

[Ada] General handling of potential renamings in SPARK

2016-04-27 Thread Arnaud Charlet
This patch implements a mechanism for handling of renamings in SPARK. Since SPARK cannot handle this form of aliasing, a reference to a renamed object is replaced by a reference to the object itself. -- Source -- -- regpat.ads package Regpat is type Program_Data is

<    1   2   3   4   5   6   7   8   9   10   >