aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2018-12-11[Ada] GNAT.Sockets: add IPv6 supportDmitriy Anisimkov9-371/+1441
2018-12-11 Dmitriy Anisimkov <anisimko@adacore.com> gcc/ada/ * libgnat/g-socket.ads (Family_Type): Add new enumerated value Family_Unspec to be able to use it in Get_Address_Info parameter and find IPv4 together with IPv6 addresses. (Inet_Addr_Bytes_Length): Zero length for Family_Unspec. New IPv6 predefined constant addresses. (IPv4_To_IPv6_Prefix): IPv4 mapped to IPv6 address prefix. (Is_IPv4_Address): Rename from Is_IP_Address and published. (Is_IPv6_Address): New routine. (Image of Inet_Addr_Type): Fix description about IPv6 address text representation. (Level_Type): New propocol level IP_Protocol_For_IPv6_Level. (Add_Membership_V4): New socket option equal to Add_Membership. (Drop_Membership_V4): New socket option equal to Drop_Membership. (Multicast_If_V4): New socket option equal to Multicast_If. (Multicast_Loop_V4, Add_Membership_V6, Drop_Membership_V6, Multicast_If_V6, Multicast_Loop_V6, Multicast_Hops, IPv6_Only): New socket option for IPv6. (Address_Info): New record to keep address info. (Address_Info_Array): Array to keep address info records. (Get_Address_Info): Routine to get address info records by host and service names. (Host_Service): Record to keep host and service names. (Get_Name_Info): New routine to get host and service names by address. (Create_Socket): Add Level parameter, IP_Protocol_For_IP_Level default. (Name_Array, Inet_Addr_Array): Change array index to Positive. * libgnat/g-socket.adb (IPV6_Mreq): New record definition for IPv6. (Hex_To_Char): Remove. (Short_To_Network, Network_To_Short): Move to package GNAT.Sockets.Thin_Common. (Is_IP_Address): Remove. (To_In_Addr, To_Inet_Addr): Move to package GNAT.Sockets.Thin_Common. (Get_Socket_Option): Get value of Multicast_Loop option as integer boolean, process IPv6 options. Don't try to get Add_Membership_V4, Add_Membership_V6, Drop_Membership_V4, and Drop_Membership_V6 as not supported by the socket API. (Set_Socket_Option): Set value of Multicast_Loop option as integer boolean, process IPv6 options. * gsocket.h (IPV6_ADD_MEMBERSHIP): Define from IPV6_JOIN_GROUP if necessary for VxWorks. (IPV6_DROP_MEMBERSHIP): Define from IPV6_LEAVE_GROUP if necessary for VxWorks (HAVE_INET_NTOP): New definition. (HAVE_INET_PTON): Includes VxWorks now. * socket.c (__gnat_getaddrinfo, __gnat_getnameinfo, __gnat_freeaddrinfo, __gnat_gai_strerror, __gnat_inet_ntop): New routines. * libgnat/g-sothco.ads, libgnat/g-sothco.adb (socklen_t, In6_Addr, To_In6_Addr): New. (To_In_Addr, To_Inet_Addr): Move from package body GNAT.Sockets. (To_Inet_Addr): New overload with In6_Addr type parmeter. (In_Addr_Access_Array): Remove. (Sockaddr): Unchecked_Union instead of Sockaddr_In and old defined generic Sockaddr. (Set_Address): Use it to set family, port and address into Sockaddr. (Get_Address): New routine to get Socket_Addr_Type from Sockaddr. (Addrinfo): Structure to use with getaddrinfo. (C_Getaddrinfo, C_Freeaddrinfo, C_Getnameinfo, C_GAI_Strerror, Inet_Ntop): New routine import. (Short_To_Network, Network_To_Short): Move from package body GNAT.Sockets. * libgnat/g-stsifd__sockets.adb: Use Sockaddr instead of Sockaddr_In. * s-oscons-tmplt.c (AF_UNSPEC, EAI_SYSTEM, SOCK_RAW, IPPROTO_IPV6, IP_RECVERR, SIZEOF_socklen_t, IF_NAMESIZE): New constants. (AI_xxxx_OFFSET): Constants to consider platform differences in field positions and sizes for addrinfo structure. (AI_xxxxx): Flags for getaddrinfo. (NI_xxxxx): Flags for getnameinfo. (IPV6_xxxxx): Socket options for IPv6. (Inet_Ntop_Linkname): New routine. From-SVN: r267016
2018-12-11[Ada] Do not expand code inside ignored ghost bodiesYannick Moy5-0/+60
While ignored ghost code is not compiled into the executable, it may lead to compilation errors when it makes use of language features requiring runtime support that is not available in the available runtime library. These errors are spurious, as the executable will never call in these runtime units. This patch deactivates the expansion of code inside ignored ghost bodies of subprograms and packages, so that this code is still checked for possible semantic errors, but it does not force the presence of useless runtime units. There is no impact on the executable produced. 2018-12-11 Yannick Moy <moy@adacore.com> gcc/ada/ * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Deactivate expansion in ignored ghost subprogram body. * sem_ch7.adb (Analyze_Package_Body_Helper): Deactivate expansion in ignored ghost package body. gcc/testsuite/ * gnat.dg/ghost4.adb: New testcase. From-SVN: r267015
2018-12-11[Ada] Unnesting: do not eliminate subprogram whose address is takenEd Schonberg2-1/+10
2018-12-11 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_unst.adb (Register_Subprogram): A subprogram whose address is taken (through attribute Address or Access) is reachable and cannot be eliminated, even if there is no explicit call to it: the address may be used in an indirect call or in some address-related operation. From-SVN: r267014
2018-12-11[Ada] Crash on misplaced First operation for GNAT iterable typeEd Schonberg4-1/+59
This patch improves the handling of an improper declaaration of aspect First for a GNAT-defined iterable type, 2018-12-11 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_util.adb (Get_Actual_Subtype): Function can return type mark. (Get_Cursor_Type): Improve recovery and error message on a misplaced First aspect for an iterable type. gcc/testsuite/ * gnat.dg/iter4.adb: New testcase. From-SVN: r267013
2018-12-11[Ada] Volatility, validity checks, and System.Aux_DECHristian Kirtchev6-17/+73
This patch updates validity checks to prevent the validation of an by-reference formal parameter because the parameter is not being read in the process. 2018-12-11 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * checks.adb: Add with and use clauses for Sem_Mech. (Ensure_Valid): Update the "annoying special case" to include entry and function calls. Use Get_Called_Entity to obtain the entry or subprogram being invoked, rather than retrieving it manually. Parameters passed by reference do not need a validity check. gcc/testsuite/ * gnat.dg/valid4.adb, gnat.dg/valid4_pkg.adb, gnat.dg/valid4_pkg.ads: New testcase. From-SVN: r267012
2018-12-11[Ada] Improve error message when named number passed as global itemYannick Moy2-0/+10
When a named number is used in Global/Depends contracts as global item, the error message could be confusing to users new to Ada. Now the message explains that named numbers are not objects. For instance on the following illegal code snippet: $ gcc -c bad_global.ads 1. package Bad_Global is 2. 3. X : constant := 1; 4. Y : constant := 1.0; 5. 6. procedure P with 7. Global => (Input => X, | >>> global item must denote object, state or current instance of concurrent type >>> named number "X" is not an object 8. In_Out => Y); | >>> global item must denote object, state or current instance of concurrent type >>> named number "Y" is not an object 9. 10. end Bad_Global; 2018-12-11 Yannick Moy <moy@adacore.com> gcc/ada/ * sem_prag.adb (Analyze_Global_Item): Refine error message. From-SVN: r267011
2018-12-11[Ada] Unnesting: fix a missing activation recordEd Schonberg3-69/+91
2018-12-11 Ed Schonberg <schonberg@adacore.com> gcc/ada * exp_ch7.adb (Check_Unnesting_In_Declarations): Extend subprogram so that it is usable for visible and private declarations of a package declaration, not just for declarations in the pakage body. * exp_ch13.adb (Expand_Freeze_Entity): Handle properly the freezing of a finalizer routine generated for a controlled objet declaration. Special processing already applies to finalizers because they are usually displaced into another construct. From-SVN: r267010
2018-12-11[Ada] Unnesting: ensure Current_Subprogram is always initializedArnaud Charlet2-1/+6
2018-12-11 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * exp_unst.adb (Unnest_Subprogram): Ensure Current_Subprogram is always initialized. From-SVN: r267009
2018-12-11[Ada] Fix -gnatR3 output for dynamically constrained recordEric Botcazou3-111/+138
2018-12-11 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * gcc-interface/decl.c (gnat_to_gnu_entity): Add gnat_annotate_type local variable initialized to Empty. <E_Record_Subtype>: Set it to the Cloned_Subtype, if any. For types, back-annotate alignment and size values earlier and only if the DECL was created here; otherwise, if gnat_annotate_type is present, take the values from it. (gnat_to_gnu_field): Add gnat_clause local variable. If a component clause is present, call validate_size only once on the Esize of the component. Otherwise, in the packed case, do not call validate_size again on the type of the component but retrieve directly its RM size. (components_to_record): Minor tweak. (set_rm_size): Remove useless test. * gcc-interface/trans.c (gnat_to_gnu): Do wrap the instance of a boolean discriminant attached to a variant part. From-SVN: r267008
2018-12-11[Ada] Fix setting of Has_Predicate flag for aggregate subtypesEd Schonberg2-2/+20
This patch enures that the subtype of an aggregate has the Has_Predicate flag properly set if the array component has a predicate, including the case the predicate function for the component has not been constructed yet. 2018-12-11 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_aggr.adb (Array_Aggr_Subtype. Resolve_Aggr_Expr): Indicate that aggregate subtype has a predicate if the component type has a predicate; do not rely on exisatence of predicate function for component, in case component is a type no yet frozen, for which predicate function has not been created yet. From-SVN: r267007
2018-12-11[Ada] Plug small loophole with pathological packed array typeEric Botcazou6-3/+45
This fixes a crash in gigi on a pathological packed array type, whose component type is a record type without representation clause or packing but with a clause that bumps its size to a non-multiple value of the storage unit. In this case, the front-end fails to detect that calls to the packing manpulation routines of the run time are necessary. The fix doesn't change anything for non-pathological cases, i.e. when the component type has a representation clause or is packed. 2018-12-11 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_aggr.adb (Packed_Array_Aggregate_Handled): Bail out for any non-scalar type as component type of the array. gcc/testsuite/ * gnat.dg/packed_array.adb, gnat.dg/packed_array.ads, gnat.dg/packed_array_pkg.ads: New testcase. From-SVN: r267006
2018-12-11[Ada] Fix elaboration of record with 1-element dynamic arrayEric Botcazou4-13/+29
2018-12-11 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * einfo.ads (Is_Bit_Packed_Array): Fix values of component size. (Is_Packed): Likewise. * gcc-interface/utils.c (convert): Do not extract the value of a justified modular type if the destination type is a regular array. * gcc-interface/decl.c (gnat_to_gnu_component_type): Pass TYPE_DECL to validate_size wherever the array has packed components. From-SVN: r267005
2018-12-11[Ada] gnatbind: ghost code with -gnatQBob Duff3-2/+11
This patch fixes a bug where if a library unit is compiled with -gnatQ, and that library unit is an ignored Ghost unit, then gnatbind silently fails. 2018-12-11 Bob Duff <duff@adacore.com> gcc/ada/ * gnat1drv.adb (gnat1drv): Pass the correct Object value when calling Write_ALI in the case of -gnatQ. * gnatbind.adb (Gnatbind): Avoid silent failure; give an error message. From-SVN: r267004
2018-12-11[Ada] Unnesting: fix for constrained arrays and improve static constantsEd Schonberg2-3/+38
2018-12-11 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_unst.adb (Needs_Fat_Pointer): A fat pointer is required if the entity has a private type whose full view is an unconstrained array type. (Rewrite_One_Ref): If the reference is to a static constant, use its value rather than create a reference through the activation record. This is more efficient, and furthermore indispensable if the context requires a static constant, such as in a branch of a case statement. From-SVN: r267003
2018-12-11[Ada] Missing predicate check on declaration with aggregate expressionEd Schonberg2-1/+12
This patch adds a missing predicate check on the initial value of an object whose declaration initializes the object with an aggregate. Such a declaration is marked No_Initialization to prevent a call to a default initialization procedure, but the check is needed on the value of the aggregate. Executing the following: gnatmake -q -gnata pred ./pred must yield: raised SYSTEM.ASSERTIONS.ASSERT_FAILURE : Dynamic_Predicate failed at root.ads:30 ---- with Root; procedure Pred is begin null; end Pred; ---- package Root with SPARK_Mode is type Index_Type is range 1 .. Natural'Last; type Element_Type is private; Null_Element : constant Element_Type; type Foobar_Type is array (Index_Type range <>) of Element_Type with Dynamic_Predicate => Foobar_Type'First > 0 and Foobar_Type'Length > 0; Null_Foobar : constant Foobar_Type; private type Kind_Type is (Kind_Invalid, Kind_Valid); type Element_Type (Kind : Kind_Type := Kind_Invalid) is record Index1 : Index_Type; case Kind is when Kind_Valid => Index2 : Index_Type; when Kind_Invalid => null; end case; end record; Null_Element : constant Element_Type := (Kind => Kind_Invalid, Index1 => Index_Type'First); Null_Foobar : constant Foobar_Type := (1 .. 0 => Null_Element); end Root; 2018-12-11 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch3.adb (Analyze_Object_Declaration): Apply Dynamic_Predicate check to an object of an array type initialized with an aggregate. From-SVN: r267002
2018-12-11[Ada] Crash on generic instantiation in ignored Ghost contextHristian Kirtchev5-35/+69
The following patch corrects the freezing of entities to properly preserve all freeze nodes in case of recursive freezing when the context is ignored Ghost, and the construct frozen is non-Ghost. 2018-12-11 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * freeze.adb (Add_To_Result): Move the ignored Ghost-specific handling of freeze nodes to... (Freeze_Entity): ...here. This ensures that the freeze nodes of constructs that have recursive freezing are preserved when the context is ignored Ghost, and the top level construct being frozen is non-Ghost. gcc/testsuite/ * gnat.dg/ghost3.adb, gnat.dg/ghost3.ads: New testcase. From-SVN: r267001
2018-12-11[Ada] Uintp: add a new UI_From_Integral generic constructorEd Schonberg3-0/+63
2018-12-11 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * uintp.ads, uintp.adb (UI_From_Integral): New generic function, to simplify construction of Universal_Integer representations from any Integer type. If type is small enough the code is equivalent to a call to UI_To_Int with appropriate conversions; otherwise the routine uses the existing mechanism of building a vector of suitable integer values and calling Vector_To_Uint. The routine must not be applied to a biased type. From-SVN: r267000
2018-12-11[Ada] Crash on compilation unit function that builds in placeEd Schonberg8-3/+52
This patch fixes a crash on a function that builds its limited result in place. Previously this was handled properly only if the function was a child unit. 2018-12-11 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch3.adb (Build_Itype_Reference): Handle properly an itype reference created for a function that is a compilation unit, for example if the function builds in place an object of a limited type. gcc/testsuite/ * gnat.dg/bip_cu.adb, gnat.dg/bip_cu_constructor.adb, gnat.dg/bip_cu_constructor.ads, gnat.dg/bip_cu_t.adb, gnat.dg/bip_cu_t.ads: New testcase. From-SVN: r266999
2018-12-11[Ada] GNAT.Sockets: fix timeout computations for socketsDmitriy Anisimkov3-16/+52
2018-12-11 Dmitriy Anisimkov <anisimko@adacore.com> gcc/ada/ * libgnat/g-socket.ads, libgnat/g-socket.adb: Fix duration computations to be compatible with the type for socket timeouts on Windows. From-SVN: r266998
2018-12-11[Ada] Minor reformattingsGary Dismukes3-7/+12
2018-12-11 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * exp_util.ads: Use preferred U.S. spelling of "honored". * sem_spark.adb: Remove extra whitespace. From-SVN: r266997
2018-12-11[Ada] Crash on ignored Ghost expression functionHristian Kirtchev7-28/+110
This patch updates freezing to ensure that freeze nodes are inserted into the tree when the entity being frozen is non-Ghost, and the context is an ignored Ghost spec expression. 2018-12-11 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * exp_util.adb (Insert_Action): Add new formal parameter Spec_Expr_OK. (Insert_Actions): Add new formal parameter Spec_Expr_OK. Update all calls to Insert_Actions where relevant. Honour an insertion from a spec expression context when requested by the caller. * exp_util.ads (Insert_Action): Add new formal parameter Spec_Expr_OK. (Insert_Actions): Add new formal parameter Spec_Expr_OK. * freeze.adb (Add_To_Result): Force the insertion of the freeze node even when the context is a spec expression. gcc/testsuite/ * gnat.dg/ghost2.adb, gnat.dg/ghost2.ads: New testcase. From-SVN: r266996
2018-12-11[Ada] Remove vxlink and vxaddr2line from this repositoryJerome Lambourg11-1723/+8
Those tools need a dedicated repository as they're VxWorks specific and not related with the Ada front-end. 2018-12-11 Jerome Lambourg <lambourg@adacore.com> gcc/ada/ * vxaddr2line.adb, vxlink-bind.adb, vxlink-bind.ads, vxlink-link.adb, vxlink-link.ads, vxlink-main.adb, vxlink.adb, vxlink.ads: Remove. * gcc-interface/Make-lang.in, gcc-interface/Makefile.in: Remove bits for vxaddr2line. From-SVN: r266995
2018-12-11[Ada] Minor reformattingHristian Kirtchev9-92/+119
2018-12-11 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * exp_aggr.adb, exp_ch7.adb, gnat1drv.adb, sem_ch10.adb, sem_ch13.adb, sem_ch6.adb, sem_ch7.adb, sem_util.adb: Minor reformatting. From-SVN: r266994
2018-12-11[Ada] Complete implementation of RM C.6(19) clauseEric Botcazou7-6/+110
This ensures that the compiler fully implements the C.6(19) clause of the Ada Reference Manual and gives a warning when the clause does change the passing mechanism of the affected parameter. 2018-12-11 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * fe.h (Is_Atomic_Object): Declare. (Is_Volatile_Object): Likewise. * gcc-interface/trans.c (atomic_or_volatile_copy_required_p): New. (Call_to_gnu): Generate a copy for an actual parameter passed by reference if the conditions set forth by RM C.6(19) are met and specificially deal with an atomic actual parameter. gcc/testsuite/ * gnat.dg/atomic11.adb, gnat.dg/atomic11_pkg1.ads, gnat.dg/atomic11_pkg2.ads: New testcase. From-SVN: r266993
2018-12-11[Ada] Stubs that complete generic subprogram do have a "prior declaration"Piotr Trojanek3-7/+31
The intuition behind the Is_Subprogram_Stub_Without_Prior_Declaration utility routine is to detect stubs that act as subprogram declarations and False on stubs that act as completions. This behaviour is now fixed for stubs that correspond to generic subprogram declarations. This patch affects a routine that is only used in GNATprove, so no frontend test provided. An example where the result changed from True to False is: ----------- -- p.ads -- ----------- package P is generic procedure Proc; end P; ----------- -- p.adb -- ----------- package body P is procedure Proc is separate; -- now we return False for this stub end P; ---------------- -- p-proc.adb -- ---------------- separate (P) procedure Proc is begin null; end; 2018-12-11 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_util.adb (Is_Subprogram_Stub_Without_Prior_Declaration): Return False on stubs that complete a generic subprogram. * sem_util.ads: Update corresponding comment. From-SVN: r266992
2018-12-11[Ada] GNATprove: improve proofs for uninitialized constrained objectsEd Schonberg2-2/+12
2018-12-11 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch4.adb (Analyze_Allocator): In GNATprove mode build a subtype declaration if the allocator has a subtype indication with a constraint. This allows additional proofs to be applied to allocators that designate uninitialized constrained objects. From-SVN: r266991
2018-12-11[Ada] Support access types in GNATproveYannick Moy2-0/+10
SPARK RM has been updated to support access types in SPARK. Part of this support is that now SPARK RM 3.1 lists access types as having full default initialization. Now updated. There is no impact on compilation. 2018-12-11 Yannick Moy <moy@adacore.com> gcc/ada/ * sem_util.adb (Has_Full_Default_Initialization): Consider access types as having full default initialization. From-SVN: r266990
2018-12-11[Ada] Better error message from GNATprove on illegal switchYannick Moy4-2/+36
When a compilation switch is wrongly passed to GNATprove without the leading hyphen, this patch issues a clear error message instead of the obscure 'usage' message previously displayed. There is no impact on compilation. 2018-12-11 Yannick Moy <moy@adacore.com> gcc/ada/ * gnat1drv.adb (Gnat1drv): Issue specific error message in GNATprove mode when multiple file names on the command line. * osint.adb, osint.ads (Dump_Command_Line_Source_File_Names): New procedure to print file names on the command line. From-SVN: r266989
2018-12-11[Ada] Fix runtime stack overflow for out/in-out actuals without discr.Javier Miranda2-0/+23
2018-12-11 Javier Miranda <miranda@adacore.com> gcc/ada/ * exp_aggr.adb (Convert_To_Assignments): When gnerating C, do not declare a temporary to initialize an aggregate assigned to Out or In_Out parameters whose type has no discriminants. This avoids stack overflow errors at runtime. From-SVN: r266988
2018-12-11[Ada] Additionsal trasformations for unnesting in package bodiesEd Schonberg2-11/+72
This patch extends the previous algorithm for creating an explicit elaboration procedure for a package body when expansion generates subprograms in the statement part of the body. For unnesting to work properly, these subprograms must appear within an explicit subprogram body so that uplevel references can be placed in the proper activation record. Ongoing work for LLVM generation. 2018-12-11 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_ch7.adb (Check_Unnesting_Elaboration_Code): Extend algorithm to cover subprograms generated in nested loops and in exception handlers, in order to build an explicit elaboration procedure in more complex cases. From-SVN: r266987
2018-12-11[Ada] Remove vxworks*-crtbe-link.specJerome Lambourg38-422/+38
The VxWorks crtbe are now part of libgcc, needed to support C++ on this target. 2018-12-11 Jerome Lambourg <lambourg@adacore.com> gcc/ada/ * Makefile.rtl, gcc-interface/Makefile.in: Remove crtbe bits for VxWorks. * libgnat/system-vxworks-arm-rtp-smp.ads, libgnat/system-vxworks-arm-rtp.ads, libgnat/system-vxworks-arm.ads, libgnat/system-vxworks-e500-kernel.ads, libgnat/system-vxworks-e500-rtp-smp.ads, libgnat/system-vxworks-e500-rtp.ads, libgnat/system-vxworks-ppc-kernel.ads, libgnat/system-vxworks-ppc-rtp-smp.ads, libgnat/system-vxworks-ppc-rtp.ads, libgnat/system-vxworks-ppc.ads, libgnat/system-vxworks-x86-kernel.ads, libgnat/system-vxworks-x86-rtp-smp.ads, libgnat/system-vxworks-x86-rtp.ads, libgnat/system-vxworks7-aarch64-rtp-smp.ads, libgnat/system-vxworks7-aarch64.ads, libgnat/system-vxworks7-arm-rtp-smp.ads, libgnat/system-vxworks7-e500-kernel.ads, libgnat/system-vxworks7-e500-rtp-smp.ads, libgnat/system-vxworks7-e500-rtp.ads, libgnat/system-vxworks7-ppc-kernel.ads, libgnat/system-vxworks7-ppc-rtp-smp.ads, libgnat/system-vxworks7-ppc-rtp.ads, libgnat/system-vxworks7-ppc64-kernel.ads, libgnat/system-vxworks7-ppc64-rtp-smp.ads, libgnat/system-vxworks7-x86-kernel.ads, libgnat/system-vxworks7-x86-rtp-smp.ads, libgnat/system-vxworks7-x86-rtp.ads, libgnat/system-vxworks7-x86_64-kernel.ads, libgnat/system-vxworks7-x86_64-rtp-smp.ads: Remove pragma Linker_Options for --specs. * vx_crtbegin.c, vx_crtbegin.inc, vx_crtbegin_array.c, vx_crtbegin_attr.c, vx_crtend.c, vxworks-gnat-crtbe-link.spec: Remove. From-SVN: r266986
2018-12-11[Ada] Spurious visibility error on aspect PredicateEd Schonberg2-0/+8
The GNAT-defined aspect Predicate has the same semantics as the Ada aspect Dynamic_Predicate, including direct visibility to the components of a record type to which the aspect applies. The following must compile quietly: gcc -c integer_stacks.ads ---- pragma SPARK_Mode (On); with Bounded_Stacks; package Integer_Stacks is new Bounded_Stacks (Element => Integer, Default_Element => 0); ---- generic type Element is private; Default_Element : Element; package Bounded_Stacks is type Stack (Capacity : Positive) is tagged private with Default_Initial_Condition => Empty (Stack); function "=" (Left, Right : Stack) return Boolean; function Extent (This : Stack) return Natural; function Empty (This : Stack) return Boolean; function Full (This : Stack) return Boolean; procedure Reset (This : out Stack) with Post'Class => Empty (This) and not Full (This), Global => null, Depends => (This =>+ null); procedure Push (This : in out Stack; Item : Element) with Pre'Class => not Full (This) and Extent (This) < This.Capacity, Post'Class => not Empty (This) and Extent (This) = Extent (This'Old) + 1, Global => null, Depends => (This =>+ Item); procedure Pop (This : in out Stack; Item : out Element) with Pre'Class => not Empty (This), Post'Class => not Full (This) and Extent (This) = Extent (This'Old) - 1, Global => null, Depends => (This =>+ null, Item => This); function Peek (This : Stack) return Element with Pre'Class => not Empty (This), Global => null, Depends => (Peek'Result => This); private type Contents is array (Positive range <>) of Element; type Stack (Capacity : Positive) is tagged record Values : Contents (1 .. Capacity); -- := (others => Default_Element); -- Top : Natural; Top : Natural := 0; end record with Predicate => Top <= Capacity, Annotate => (GNATprove, Intentional, "type ""Stack"" is not fully initialized", "Because zeroing Top is sufficient"); end Bounded_Stacks; ---- package body Bounded_Stacks is ------------ -- Extent -- ------------ function Extent (This : Stack) return Natural is (This.Top); ----------- -- Empty -- ----------- function Empty (This : Stack) return Boolean is (This.Top = 0); ---------- -- Full -- ---------- function Full (This : Stack) return Boolean is (This.Top = This.Capacity); ----------- -- Reset -- ----------- procedure Reset (This : out Stack) is begin This := (This.Capacity, Top => 0, others => <>); -- This.Top := 0; end Reset; ---------- -- Push -- ---------- procedure Push (This : in out Stack; Item : Element) is begin This.Top := This.Top + 1; This.Values (This.Top) := Item; end Push; --------- -- Pop -- --------- procedure Pop (This : in out Stack; Item : out Element) is begin Item := This.Values (This.Top); This.Top := This.Top - 1; end Pop; ---------- -- Peek -- ---------- function Peek (This : Stack) return Element is (This.Values (This.Top)); --------- -- "=" -- --------- function "=" (Left, Right : Stack) return Boolean is begin if Left.Top /= Right.Top then return False; else for K in 1 .. Left.Top loop if Left.Values (K) /= Right.Values (K) then return False; end if; end loop; return True; end if; end "="; end Bounded_Stacks; ---- 2018-12-11 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations, Freeze_Entity_Checks): Process aspect Predicate in the same fashion as aspect Dynamic_Predicate. From-SVN: r266985
2018-12-11[Ada] Fix an ICE on instantiated subprogram with -gnatcEric Botcazou2-1/+8
The following should compile quietly: $ gcc -c p-proc.ads -gnatc procedure P.Proc is new G; with Q; package P is generic procedure G; end P; with System; with Unchecked_Conversion; package Q is generic package Inner_G is type T is access all Integer; function Cnv is new Unchecked_Conversion (System.Address, T); end Inner_G; end Q; 2018-12-11 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * gcc-interface/trans.c (elaborate_all_entities_for_package): Skip aliasing subprograms. From-SVN: r266984
2018-12-11[Ada] Update gnatmetric documentation for the Libadalang-based versionBob Duff2-181/+216
2018-12-11 Bob Duff <duff@adacore.com> gcc/ada/ * doc/gnat_ugn/gnat_utility_programs.rst: Update gnatmetric documentation for the Libadalang-based version. From-SVN: r266983
2018-12-11[Ada] Fix an ACATS regression with CCGJavier Miranda2-11/+36
2018-12-11 Javier Miranda <miranda@adacore.com> gcc/ada/ * exp_aggr.adb (In_Object_Declaration): Removed. (Is_CCG_Supported_Aggregate): New subprogram that replaces In_Object_Declaration extending its functionality to indicate if an aggregate is in a context supported by the CCG backend. From-SVN: r266982
2018-12-11[Ada] Update gnatstub documentation for the Libadalang-based versionBob Duff3-151/+156
2018-12-11 Bob Duff <duff@adacore.com> gcc/ada/ * doc/gnat_ugn/gnat_utility_programs.rst: Update gnatstub documentation for the Libadalang-based version. * gnat_ugn.texi: Regenerate. From-SVN: r266981
2018-12-11[Ada] Spurious errors on aspect specifications in generic unitsEd Schonberg12-77/+244
This patch fixes spurious errors on aspect specifications on record types when the aspect expression references a component of the type that is not a discriminant. The patch also cleans up the legality checks on aspect specifications, and improves error message on illegal aspect specifications whose expressions are not conformant between specification and freeze point, because of changes in visibility. 2018-12-11 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch13.adb (Push_Type, Pop_Type): New procedures, used for analysis of aspect expressions for record types, whose components (not only discriminants) may be referenced in aspect expressions. (Analyze_Aspect_Specifications, Analyze_Aspects_At_Freeze_Point, Analyze_Aspect_At_End-Of_Declarations, Resolve_Aspect_Expressions): Use the new subprograms. (Check_Aspect_At_End_Of_Declarations): Improve error message. (Build_Predicate_Functions): Do not build their bodies in a generic unit. (Is_Derived_Type_With_Constraint): New subprogram to uncover and reject aspect specificationss on types that appear after the type is frozen. * sem_ch13.ads (Push_Scope_And_Install_Discriminants, Uninstall_Discriminants_And_Pop_Scope): Remove. * sem_ch6.adb, sem_ch6.ads (Fully_Conformant_Expressions): Additional parameter to improve error message on illegal aspect specifications whose resolution differ between aspect specification and freeze point. * freeze.adb: Remove references to Install/Uninstall_Discriminants. gcc/testsuite/ * gnat.dg/aspect1.adb, gnat.dg/aspect1_horizontal.adb, gnat.dg/aspect1_horizontal.ads, gnat.dg/aspect1_vectors_2d.ads: New testcase. * gnat.dg/static_pred1.adb: Expect an error message. From-SVN: r266980
2018-12-11[Ada] Document the -fgnat-encodings switchPierre-Marie de Rodat3-1/+97
2018-12-11 Pierre-Marie de Rodat <derodat@adacore.com> gcc/ada/ * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Document the -fgnat-encodings switch. * gnat_ugn.texi: Regenerate. From-SVN: r266979
2018-12-11[Ada] Crash on nesting of subunits with bodies acting as specsJustin Squirek2-1/+9
This patch corrects an issue whereby a set of nested subunits including subprogram subunits acting as bodies would cause a crash when a child subunit "withs" an ansestor in certain instances due to a mismanagment of the scope stack. ------------ -- Source -- ------------ -- w.ads package W is end; -- w-b.ads package W.B is pragma Elaborate_Body; end; -- w-b.adb with W.B.C; package body w.B is end; -- w-b-c.adb with W; procedure W.B.C is package D is procedure E; end; package body D is separate; begin null; end; -- w-b-c-d.adb separate (W.B.C) package body D is procedure E is separate; end; -- w-b-c-d-e.adb with W; separate (W.B.C.D) procedure E is begin null; end; ----------------- -- Compilation -- ----------------- $ gnatmake -q w-b.adb 2018-12-11 Justin Squirek <squirek@adacore.com> gcc/ada/ * sem_ch10.adb (Analyze_Subunit): Modify conditional to fully remove parent contexts from library-level subprogram bodies in addition to package bodies. From-SVN: r266978
2018-12-11[Ada] Suppress call to Initial_Condition when the annotation is ignoredHristian Kirtchev3-8/+19
This patch suppresses the generation of the Initial_Condition procedure tasked with verifying the run-time semantics of the pragma when the pragma is ignored by means of -gnata, pragma Assertion_Policy, etc. ------------ -- Source -- ------------ -- all_asserts_off.adc pragma Assertion_Policy (Ignore); -- all_asserts_on.adc pragma Assertion_Policy (Check); -- ic_off.adc pragma Assertion_Policy (Initial_Condition => Ignore); -- ic_on.adc pragma Assertion_Policy (Initial_Condition => Check); -- init_cond.ads package Init_Cond with SPARK_Mode, Initial_Condition => Flag = False is Flag : Boolean := True; procedure Set_Flag; end Init_Cond; -- init_cond.adb package body Init_Cond with SPARK_Mode is procedure Set_Flag is begin Flag := True; end Set_Flag; end Init_Cond; ---------------------------- -- Compilation and output -- ---------------------------- & gcc -c -S -gnatDG init_cond.adb -gnatec=all_asserts_on.adc & grep -c "Initial_Condition;" init_cond.adb.dg & grep -c "_elabb" init_cond.s & gcc -c -S -gnatDG init_cond.adb -gnatec=ic_on.adc & grep -c "Initial_Condition;" init_cond.adb.dg & grep -c "_elabb" init_cond.s & gcc -c -S -gnatDG init_cond.adb -gnatec=all_asserts_off.adc & grep -c "Initial_Condition;" init_cond.adb.dg & grep -c "_elabb" init_cond.s & gcc -c -S -gnatDG init_cond.adb -gnatec=ic_off.adc & grep -c "Initial_Condition;" init_cond.adb.dg & grep -c "_elabb" init_cond.s 2 4 2 4 0 0 0 0 2018-12-11 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * exp_prag.adb (Expand_Pragma_Initial_Condition): Do not generate an Initial_Condition procedure and a call to it when the associated pragma is ignored. * sem_ch10.adb (Analyze_Compilation_Unit): Minor cleanup. From-SVN: r266977
2018-12-11[Ada] Almost always inline init. procedure of small and simple recordsEric Botcazou6-35/+95
2018-12-11 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * fe.h (Debug_Generated_Code): Declare. * gcc-interface/gigi.h (enum inline_status_t): Rename is_disabled to is_default, is_enabled to is_requested and add is_prescribed. * gcc-interface/decl.c (inline_status_for_subprog): New function. (gnat_to_gnu_entity) <E_Subprogram_Type>: Use it to get the inlining status of the subprogram. * gcc-interface/trans.c (gigi): Adjust to above renaming. (build_raise_check): Likewise. (Compilation_Unit_to_gnu): Likewise. (gnat_to_gnu): Likewise. * gcc-interface/utils.c (create_subprog_decl): Likewise. Deal with is_prescribed status by setting DECL_DISREGARD_INLINE_LIMITS. Do not set the DECL_NO_INLINE_WARNING_P flag if Debug_Generated_Code is true. From-SVN: r266976
2018-12-11ccmp.c (ccmp_candidate_p): Use GIMPLE API properly.Richard Biener2-7/+8
2018-12-11 Richard Biener <rguenther@suse.de> * ccmp.c (ccmp_candidate_p): Use GIMPLE API properly. From-SVN: r266975
2018-12-11re PR lto/86004 (Several lto test cases begin failing with r260963)Jakub Jelinek20-0/+60
PR lto/86004 * doc/sourcebuild.texi (lto_incremental): Document new effective target. * lib/target-supports.exp (check_effective_target_lto_incremental): New. * g++.dg/lto/pr69137_0.C: Require lto_incremental effective target. * g++.dg/lto/pr65316_0.C: Likewise. * g++.dg/lto/pr85176_0.C: Likewise. * g++.dg/lto/pr79000_0.C: Likewise. * g++.dg/lto/pr66180_0.C: Likewise. * g++.dg/lto/pr65193_0.C: Likewise. * g++.dg/lto/pr69077_0.C: Likewise. * g++.dg/lto/pr68057_0.C: Likewise. * g++.dg/lto/pr66705_0.C: Likewise. * g++.dg/lto/pr65302_0.C: Likewise. * g++.dg/lto/20091002-1_0.C: Likewise. * g++.dg/lto/pr81940_0.C: Likewise. * g++.dg/lto/pr64043_0.C: Likewise. * g++.dg/lto/pr65549_0.C: Likewise. * g++.dg/lto/pr69133_0.C: Likewise. * gfortran.dg/lto/pr79108_0.f90: Likewise. From-SVN: r266974
2018-12-11rs6000: Don't use rs6000_isa_flags_explicit for soft float tests (PR88145)Segher Boessenkool2-4/+14
...specifically, those for builtins. Soft float can be enabled implicitly, too (for certain CPUs for example). We should use rs6000_isa_flags instead, to decide whether to expand a builtin or to bail out with an error instead. PR target/88145 * config/rs6000/rs6000.c (rs6000_expand_zeroop_builtin): Use rs6000_isa_flags instead of rs6000_isa_flags_explicit to decide whether soft float is enabled. (rs6000_expand_mtfsb_builtin): Ditto. (rs6000_expand_set_fpscr_rn_builtin): Ditto. (rs6000_expand_set_fpscr_drn_builtin): Ditto. From-SVN: r266973
2018-12-10re PR tree-optimization/80520 (Performance regression from missing ↵Jeff Law5-1/+119
if-conversion) PR tree-optimization/80520 * gimple-ssa-split-paths.c (is_feasible_trace): Recognize half diamonds that are likely if convertable. * gcc.dg/tree-ssa/split-path-5.c: Update expected output. * gcc.dg/tree-ssa/split-path-11.c: New test. From-SVN: r266971
2018-12-112018-12-10 Steven G. Kargl <kargl@gcc.gnu.org>Steven G. Kargl5-1/+52
PR fortran/97922 * io.c (gfc_match_open): Additional checks on ASYNCHRONOUS. 2018-12-10 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/97922 * gfortran.dg/io_constraints_8.f90: Update error message. * gfortran.dg/pr87922.f90: New test. From-SVN: r266968
2018-12-10PR tree-optimization/86196 - Bogus -Wrestrict on memcpy between array ↵Martin Sebor4-9/+59
elements at unequal indices gcc/ChangeLog: PR tree-optimization/86196 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use base size only of arrays. gcc/testsuite/ChangeLog: PR tree-optimization/86196 * gcc.dg/Wrestrict-18.c: New test. From-SVN: r266967
2018-12-11Daily bump.GCC Administrator1-1/+1
From-SVN: r266966
2018-12-10sinatan-1.c: Use dg-add-options ieee.Uros Bizjak2-0/+5
* gcc.dg/sinatan-1.c: Use dg-add-options ieee. From-SVN: r266963
2018-12-10Delete powerpcspeSegher Boessenkool151-112988/+17
This deletes powerpcspe, which was deprecated for GCC 8. This does not change the testsuite, or libgcc for rs6000 (which still is shared code with powerpcspe, so can use some cleanup after this). / * contrib/config-list.mk: Remove powerpc-eabispe and powerpc-linux_spe. gcc/ * config.gcc (Obsolete configurations): Delete powerpc*-*-*spe*. (Unsupported targets): Add powerpc*-*-*spe*. (powerpc*-*-*spe*): Delete. (powerpc-*-eabispe*): Delete. (powerpc-*-rtems*spe*): Delete. (powerpc*-*-linux*spe*): Delete. (powerpc*-*-linux*): Do not handle the linux*spe* targets. (powerpc-wrs-vxworks*spe): Delete. (with_cpu setting code): Delete powerpc*-*-*spe* handling. * config.host (target powerpc*-*-*spe*): Delete. * doc/invoke.texi (PowerPC SPE Options): Delete. (PowerPC SPE Options): Delete. * config/powerpcspe: Delete. From-SVN: r266961