Commit Graph

163752 Commits

Author SHA1 Message Date
Marek Polacek
d3e993e9b0 * cp-tree.h: Fix typo.
From-SVN: r263738
2018-08-21 15:10:51 +00:00
Hristian Kirtchev
92a68a0464 [Ada] Minor reformattings
2018-08-21  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* checks.adb, contracts.adb, exp_aggr.adb, exp_attr.adb,
	exp_ch6.adb, exp_ch7.adb, exp_ch9.adb, exp_unst.adb,
	exp_util.adb, freeze.adb, gnatlink.adb, layout.adb,
	lib-writ.adb, lib-xref-spark_specific.adb, sem_ch13.adb,
	sem_ch3.adb, sem_ch6.adb, sem_res.adb, sem_util.adb, sinfo.ads,
	sprint.adb: Minor reformatting.

From-SVN: r263737
2018-08-21 14:50:03 +00:00
Jerome Lambourg
5ec8edb56e [Ada] Add a new gnat tool vxlink
VxLink is a helper tool used as a wrapper around g++/gcc to build
VxWorks DKM (Downloadable Kernel Modules).

Such DKM is a partially linked object that includes entry points for
constructors and destructors.

This tool thus uses g++ to generate an intermediate partially linked
object, retrieves the list of constructors and destructors in it and
produces a C file that lists those ctors/dtors in a way that is
understood be VxWorks kernel. It then links this file with the
intermediate object to produce a valid DKM.

2018-08-21  Jerome Lambourg  <lambourg@adacore.com>

gcc/ada/

	* vxlink-bind.adb, vxlink-bind.ads, vxlink-link.adb,
	vxlink-link.ads, vxlink-main.adb, vxlink.adb, vxlink.ads: Add a
	new tool vxlink to handle VxWorks constructors in DKMs.
	* gcc-interface/Makefile.in: add rules to build vxlink

From-SVN: r263736
2018-08-21 14:49:49 +00:00
Ed Schonberg
084e3bd183 [Ada] Crash on expression function and tagged types
This patch fixes a compiler abort on an expression function whose
expression includes tagged types that have not been frozen before the
generated body of the function is analyzed, even though that body is
inserted at the end of the current declarative part.

2018-08-21  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper, Mask_Type):
	Refine the handling of freezing types for expression functions
	that are not completions, when analyzing the generated body for
	the function: the body is inserted at the end of the enclosing
	declarative part, and its analysis may freeze types declared in
	the same scope that have not been frozen yet.

gcc/testsuite/

	* gnat.dg/expr_func7.adb, gnat.dg/expr_func7.ads: New testcase.

From-SVN: r263735
2018-08-21 14:49:42 +00:00
Ed Schonberg
0db1c3863d [Ada] Spurious crash on expression function as completion with contracts
This patch fixes a compiler abort on an expression function that is a
completion of a subprogram with preconditions. The problem is caused by
the presence of types in the precondition that are not frozen when the
subprogram body constructed for the expression function receives the
code that enforces the precondition. These types must be frozen before
the contract is expanded, so the freeze nodes for these types appear in
the proper scope. This is analogous to what is done with type references
that appear in the original expression of the expression function.

2018-08-21  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_ch6.adb: Remove Freeze_Expr_Types.
	* freeze.ads, freeze.adb (Freeze_Expr_Types): Moved from
	sem_ch6.adb, and extended to handle other expressions that may
	contain unfrozen types that must be frozen in their proper
	scopes.
	* contracts.adb (Analyze_Entry_Or_Subprogram_Contract): If the
	contract is for the generated body of an expression function
	that is a completion, traverse the expressions for pre- and
	postconditions to freeze all types before adding the contract
	code within the subprogram body.

gcc/testsuite/

	* gnat.dg/expr_func6.adb, gnat.dg/expr_func6.ads: New testcase.

From-SVN: r263734
2018-08-21 14:49:34 +00:00
Hristian Kirtchev
5b1c45479a [Ada] Retention of with clauses for ignored Ghost units
This patch ensures that with clauses that mention ignored Ghost units are
retained in the tree. The retention is necessary for several reasons:

   * The with clauses allow the new elaboration order mechanism to
     produce the same library edges regardless of whether the Ghost unit
     is checked or ignored. This ensures that the elaboration order
     remains consistent.

   * The with clauses allow the unnesting mechanism to properly
     recognize that all units have been examined for unnesing purposes.

No observable impact, no test needed.

2018-08-21  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* sem_ch10.adb: Remove the with and use clause for unit Ghost.
	(Analyze_With_Clause): Do not mark a with clause which mentions
	an ignored Ghost code for elimination.

From-SVN: r263733
2018-08-21 14:49:26 +00:00
Javier Miranda
322d87a9b1 [Ada] Crash processing SPARK annotate aspect
The compiler blows up writing the ALI file of a package that has a ghost
subprogram with an annotate contract.

2018-08-21  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* lib-writ.adb (Write_Unit_Information): Handle pragmas removed
	by the expander.

gcc/testsuite/

	* gnat.dg/spark2.adb, gnat.dg/spark2.ads: New testcase.

From-SVN: r263732
2018-08-21 14:48:35 +00:00
Ed Schonberg
24241bd038 [Ada] Spurious error on overriding protected function in instance
The conformance between an overriding protected operation with
progenitors and the overridden interface operation requires subtype
conformance; requiring equality of return types in the case of a
function is too restrictive and leads to spurious errors when the return
type is a generic actual.

2018-08-21  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_ch6.adb (Check_Synchronized_Overriding): The conformance
	between an overriding protected operation and the overridden
	abstract progenitor operation requires subtype conformance;
	requiring equality of return types in the case of a function is
	too restrictive and leads to spurious errors when the return
	type is a generic actual.

gcc/testsuite/

	* gnat.dg/prot6.adb, gnat.dg/prot6.ads: New testcase.

From-SVN: r263731
2018-08-21 14:48:03 +00:00
Ed Schonberg
5bb9ebcbc8 [Ada] Properly set scope of artificial entities in blocks
2018-08-21  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_ch9.adb (Expand_N_Timed_Entry_Call,
	Expand_Conditional_Entry_Call): Use Reset_Scopes_Of to set
	properly the scope of all entities created in blocks generated
	by the expansion of these constructs.

From-SVN: r263730
2018-08-21 14:47:56 +00:00
Ed Schonberg
6989a2bbfa [Ada] Fix scope computation for loop statements
2018-08-21  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_ch13.adb (Build_Predicate_Functioss): Apply
	Reset_Quantified_Variables_Scope after predicate function has
	been analyzed, so that the scope can be reset on the generated
	loop statements that have replaced the quantified expressions.

From-SVN: r263729
2018-08-21 14:47:50 +00:00
Bob Duff
09825f923f [Ada] Einfo: remove obsolete code
2018-08-21  Bob Duff  <duff@adacore.com>

gcc/ada

	* einfo.ads, einfo.adb (Private_View, Shadow_Entities): Remove
	obsolete code.

From-SVN: r263728
2018-08-21 14:47:44 +00:00
Maroua Maalej
7d8cc2b6d1 [Ada] Update for Ownership rules for access types according to AI12-0240
The implementation of these Ownership rules for safe pointers and
automatic memory management is still a prototype at an experimental
stage.

To activate the checks, the code should be compiled with the debug flag
-gnatdF and the flag -gnatd.F for setting the context for formal
verification of SPARK.

These changes do not affect compilation.

2018-08-21  Maroua Maalej  <maalej@adacore.com>

gcc/ada/

	* sem_spark.adb (Check_Call_Statement): Check global and formal
	parameter permissions at call sites.
	(Check_Callable_Body): Assume permissions on globals and
	parameters depending on their modes then analyse the body
	operations.
	(Check_Declaration): Consider both deep (including elementary
	access) object declarations and normal variables. First check
	whether the deep object is of Ownership Aspec True or not, then,
	depending on its initialization, assign the appropriate state.
	Check related to non access type variables deal with
	initialization value permissions.
	(Check_Expression): Check nodes used in the expression being
	analyzed.
	(Check_Globals): Call by Check_Call_Statement to perform the
	check on globals.
	(Check_List): Call Check_Node on each element of the list.
	(Check_Loop_Statement): Check the Iteration_Scheme and loop
	statements.
	(Check_Node): Main traversal procedure to check safe pointer usage.
	(Check_Package_Body): Check subprogram's body.
	(Check_Param_In): Take a formal and an actual parameter and
	Check the permission of every in-mode parameter.
	(Check_Param_Out): Take a formal and an actual parameter and
	check the state of out-mode and in out-mode parameters.
	(Check_Statement): Check statements other than procedure call.
	(Get_Perm, Get_Perm_Or_Tree, Get_Perm_Tree): Find out the state
	related to the given name.
	(Is_Deep): Return True if an object is of access type or has
	subfields of access type.
	(Perm_Error, Perm_Error_Subprogram_End): Add an error message
	whenever the found state on the given name is different from the
	one expected (in the statement being analyzed).
	(Process_Path): Given an operation and a current state, call
	Perm_Error if there is any mismatch.
	(Return_Declarations, Return_Globals, Return_The_Global): Check
	the state of a given name at the end of the subprogram. These
	procedures may change depending on how we shall finally deal
	with globals and the rhs state in a move operation.
	(Set_Perm_Extensions, Set_Perm_Prefixes_Borrow,
	Set_Perm_Prefixes, Setup_Globals, Setup_Parameter_Or_Global,
	Setup_Parameters): Set up the new states to the given node and
	up and down the tree after an operation.
	(Has_Ownership_Aspect_True): This function may disappear later
	when the Ownership Aspect will be implemented in the FE.

From-SVN: r263727
2018-08-21 14:47:38 +00:00
Ed Schonberg
41306c0a89 [Ada] Spurious ambiguity error on call returning an access type
If F is a function with a single defaulted parameter that returns an
access_to_array type, then F (I) may designate either the return type or
an indexing of the result of the call, after implicit dereferencing.  If
the component type C of the array type AR is accces AR this is ambiguous
in a context whose expected type is C. If F is parameterless the call is
not ambiguous.

2018-08-21  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve_Call): Resolve correctly a parameterless
	call that returns an access type whose designated type is the
	component type of an array, when the function has no defaulted
	parameters.

gcc/testsuite/

	* gnat.dg/access5.adb, gnat.dg/access5.ads: New testcase.

From-SVN: r263726
2018-08-21 14:47:32 +00:00
Yannick Moy
298e0c6bf7 [Ada] Document entries of the target parametrization file
2018-08-21  Yannick Moy  <moy@adacore.com>

gcc/ada/

	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
	Document entries of the target parametrization file.
	* gnat_ugn.texi: Regenerate.

From-SVN: r263725
2018-08-21 14:47:25 +00:00
Ed Schonberg
78645ad8c7 [Ada] Set scope of elaboration flag for 'Access
2018-08-21  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_attr.adb: Set scope of elaboration flag for 'Access.

From-SVN: r263724
2018-08-21 14:47:18 +00:00
Ed Schonberg
1bd9b6a576 [Ada] Sprint: add guard on printing aspects
2018-08-21  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sprint.adb: Add guard on printing aspects.

From-SVN: r263723
2018-08-21 14:47:12 +00:00
Javier Miranda
dc88759c87 [Ada] Crash compiling SPARK ghost functions with callgraph info
The compiler blows up generating the callgraph output of SPARK ghost
subprograms whose contracts invoke ghost functions.

2018-08-21  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* exp_cg.adb (Generate_CG_Output): Handle calls removed by the
	expander.

From-SVN: r263722
2018-08-21 14:47:05 +00:00
Ed Schonberg
5c0972ba85 [Ada] Unnesting: do not set size of access subprograms
2018-08-21  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* layout.adb: Do not set size of access subprogram if unnesting.

From-SVN: r263721
2018-08-21 14:46:59 +00:00
Ed Schonberg
c7fafef974 [Ada] Unnesting: do not emit warnings for access to subprograms
2018-08-21  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* freeze.adb: Remove warnings for access to subprograms when
	unnesting is active.

From-SVN: r263720
2018-08-21 14:46:54 +00:00
Ed Schonberg
d2a60e5911 [Ada] Improper copying of limited arrays with default initialization
This patch fixes an improper expansion of aggregates for limited array
types in an object declaration. Prior to this patch, The presence of the
aggregate (which can only consist of box initializations) would create a
temporary that was then assigned to the object in the declaration.
Apart from a violation of the semantics of build-in-place limited
objects, this can also lead to out-of-scope access in LLVM.

Executing the following;

   gcc -c -gnatDG nocopy.adb
   grep quintet nocopy.adb.dg | wc -l

must yield:

   5

----
procedure NoCopy is

  --  Task used in this example to test that the limited component
  --  is properly initialized.

  task type T_Task (Disc : Natural);

  task body T_Task is
  begin
     null;
  end T_Task;

  type My_Rec (D : Natural := 9999) is record

     --  Components initialized by means of the current value
     --  of the record discriminant

     T : T_Task (D);
  end record;

  type TR is array (1 .. 5) of My_Rec;
  Quintet : TR := (others => (others => <>));
begin
   null;
end NoCopy;

2018-08-21  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_aggr.adb (Expand_Array_Aggregate): If the component type
	is limited, the array must be constructed in place, so set flag
	In_Place_Assign_OK_For_Declaration accordingly. This prevents
	improper copying of an array of tasks during initialization.

From-SVN: r263719
2018-08-21 14:46:49 +00:00
Eric Botcazou
1ab1c4ee18 [Ada] Fix spurious error on unchecked conversion on VFA record type
2018-08-21  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* gcc-interface/trans.c (Call_to_gnu): Always suppress an
	unchecked conversion around the actual for an In parameter
	passed by copy.

From-SVN: r263718
2018-08-21 14:46:45 +00:00
Eric Botcazou
294e7bbb9e [Ada] Fix internal error on extension of record with representation clause
This fixes a long-standing issue present for extensions of tagged record
types with a representation clause: the clause is correctly inherited
for components inherited in the extension but the position and size are
not, which fools the logic of Is_Possibly_Unaligned_Object.

This can result in an attempt to take the address of a component not
aligned on a byte boundary, which is then flagged as an internal error.

2018-08-21  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_util.adb (Is_Possibly_Unaligned_Object): For the case of a
	selected component inherited in a record extension and subject
	to a representation clause, retrieve the position and size from
	the original record component.

gcc/testsuite/

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

From-SVN: r263717
2018-08-21 14:46:40 +00:00
Ed Schonberg
2e5df2955f [Ada] Spurious "Duplicated symbol" error with discriminated tasks
This patch fixes a spurious error in a program that contains a
discriminated task type and several of its subtype in the same
declarative part, when the corresponding discriminant constraints are
expressions.

2018-08-21  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_util.ads, sem_util.adb (New_External_Entity): Type of
	Suffix_Index must be Int, not Nat, so that a negative value can
	be used to generate a unique name for an external object, as
	specified in Tbuild.New_External_Name.
	(Scope_Within): Handle private type whose completion is a
	synchronized type (For unnesting).
	* itypes.ads, itypes.adb (Create_Itype): Ditto
	* sem_ch3.adb (Constrain_Corresponding_Record): Generate a
	unique name for the created subtype, because there may be
	several discriminated tasks present in the same scope, and each
	needs its distinct corresponding record subtype.

gcc/testsuite/

	* gnat.dg/task1.adb, gnat.dg/task1.ads, gnat.dg/task1_pkg.adb,
	gnat.dg/task1_pkg.ads: New testcase.

From-SVN: r263716
2018-08-21 14:46:34 +00:00
Yannick Moy
c4b9b2916c [Ada] Define versions of dimension system for Float and Long_Float
The dimension system in System.Dim.Mks is based on Long_Long_Float,
which may not be convenient to people who want to use Float or
Long_Float as basis. These new files provide units that define the
dimension system based on Float in System.Dim.Float_Mks and on
Long_Float in System.Dim.Long_Mks.

Child packages Other_Prefixes and Mks_IO are also defined appropriately,
with new instantiations for the various sizes of floating-point types.

2018-08-21  Yannick Moy  <moy@adacore.com>

gcc/ada/

	* doc/gnat_ugn/gnat_and_program_execution.rst: Update
	documentation of dimensionality analysis.
	* gnat_ugn.texi: Regenerate.
	* Makefile.rtl, impunit.adb: Consider the new units.
	* libgnat/s-dfmkio.ads, libgnat/s-dfmopr.ads,
	libgnat/s-diflmk.ads: New units based on Float.
	* libgnat/s-dilomk.ads, libgnat/s-dlmkio.ads,
	libgnat/s-dlmopr.ads: New units based on Long_Float.
	* libgnat/s-dmotpr.ads: Rename to libgnat/s-dgmgop.ads and turn
	into an instance of
	System.Dim.Generic_Mks.Generic_Other_Prefixes.
	* libgnat/s-dimmks.ads: Rename to libgnat/s-digemk.ads and turn
	into an instance of System.Dim.Generic_Mks.

From-SVN: r263715
2018-08-21 14:46:07 +00:00
Hristian Kirtchev
2201fa7bd3 [Ada] General purpose doubly linked list for compiler and tool use
This patch adds unit GNAT.Lists which currently contains the
implementation of a general purpose doubly linked list intended for use
by the compiler and the tools around it.

2018-08-21  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* impunit.adb: Add g-lists to the set of non-implementation
	units.
	* libgnat/g-lists.adb, libgnat/g-lists.ads: New unit.
	* Makefile.rtl: Add g-lists to the set of non-tasking units.
	* gcc-interface/Make-lang.in: Add g-lists to the set of files
	used by gnat1.

gcc/testsuite/

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

From-SVN: r263714
2018-08-21 14:45:49 +00:00
Ed Schonberg
c36d21ee42 [Ada] Fix scope computation for entry bodies and accept alternatives
2018-08-21  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_ch9.adb (Reset_Scopes): Do not recurse into type
	declarations when resetting the scope of entities declared the
	procedures generated for entry bodies and accept alternatives.
	Use the entity of the procedure declaration, not its body, as
	the new scope.

From-SVN: r263713
2018-08-21 14:45:04 +00:00
Hristian Kirtchev
3f99a611ca [Ada] Crash on entry in generic with dynamic elaboration checks
This patch modifies the set of attributes that applies to entries and
entry families to include elaboration entities used by the
access-before-elaboration mechanism.

2018-08-21  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* einfo.adb (Elaboration_Entity): Include entries and entry
	families in the set of legal entities.
	(Elaboration_Entity_Required): Include entries and entry
	families in the set of legal entities.
	(Set_Elaboration_Entity): Include entries and entry families in
	the set of legal entities.
	(Set_Elaboration_Entity_Required): Include entries and entry
	families in the set of legal entities.
	(Write_Field13_Name): Update the output of attribute
	Elaboration_Entity.
	* einfo.ads: Attributes Elaboration_Entity and
	Elaboration_Entity_Required now apply to entries and entry
	families.

gcc/testsuite/

	* gnat.dg/elab6.adb, gnat.dg/elab6.ads, gnat.dg/elab6_pkg.adb,
	gnat.dg/elab6_pkg.ads: New testcase.

From-SVN: r263712
2018-08-21 14:44:56 +00:00
Arnaud Charlet
83fadfd9ab [Ada] Set_Targ: add a CodePeer annotation
2018-08-21  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* set_targ.adb: Mark some CodePeer message as Intentional.

From-SVN: r263711
2018-08-21 14:44:51 +00:00
Ed Schonberg
8a2f6bbe45 [Ada] Compiler abort on call to expr. function for default discriminant
If a discriminant specification has a default that is a call to an
expression function, that function has to be frozen at the point of a
call to the initialization procedure for an object of the record type,
even though the call does not appear to come from source.

2018-08-21  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve_Call): Force the freezing of an
	expression function that is called to provide a default value
	for a defaulted discriminant in an object initialization.

gcc/testsuite/

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

From-SVN: r263710
2018-08-21 14:44:46 +00:00
Hristian Kirtchev
d8251d001b [Ada] Dynamically resizable, load factor-based hash table
This patch introduces a dynamically resizable, load factor-based hash
table in unit GNAT.Dynamic_HTables.

2018-08-21  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* libgnat/g-dynhta.adb, libgnat/g-dynhta.ads: New package
	Dynamic_HTable.

gcc/testsuite/

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

From-SVN: r263709
2018-08-21 14:44:41 +00:00
Javier Miranda
f20b5ef46d [Ada] Enumeration types with non-standard representation
The compiler may report errors on enumeration types with non-standard
representation (i.e. at least one literal has a representation value
different from its 'Pos value) processing attribute 'Enum_Rep.

It may also generate wrong code for the evaluation of 'Enum_Rep raising
Constraint_Error at runtime.

2018-08-21  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* checks.ads (Determine_Range): Adding documentation.
	* checks.adb (Determine_Range): Don't deal with enumerated types
	with non-standard representation.
	(Convert_And_Check_Range): For conversion of enumeration types
	with non standard representation to an integer type perform a
	direct conversion to the target integer type.

gcc/testsuite/

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

From-SVN: r263708
2018-08-21 14:44:35 +00:00
Piotr Trojanek
b7e875ce96 [Ada] Handle pragmas that come from aspects for GNATprove
In GNATprove we appear to abuse a routine related to cross-references and
expect it to deliver exact results, which is not what it was designed for.

This patch is a temporary solution to avoid crashes in GNATprove; it doesn't
affect the frontend or other backends, because this code is used exclusively
by GNATprove (it is located in the frontend for technical reasons). No tests
provided.

2018-08-21  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* lib-xref.ads, lib-xref-spark_specific.adb
	(Enclosing_Subprogram_Or_Library_Package): Now roughtly works
	for pragmas that come from aspect specifications.

From-SVN: r263707
2018-08-21 14:44:30 +00:00
Pierre-Marie de Rodat
d40800cfe5 [Ada] Add sa_messages.ad[sb] for SPARK 2014
These new source files will make it possible to build SPARK 2014 from
a snapshot of GCC FSF sources.

2018-08-21  Pierre-Marie de Rodat  <derodat@adacore.com>

gcc/ada/

	* sa_messages.ads, sa_messages.adb: New source files.

From-SVN: r263706
2018-08-21 14:44:25 +00:00
David Edelsohn
bce17c392a * testsuite/18_support/new_nothrow.cc: XFAIL on AIX.
From-SVN: r263703
2018-08-21 10:03:16 -04:00
Richard Sandiford
3d20537c5e Update global reviewers list
2018-08-21  Richard Sandiford  <richard.sandiford@arm.com>

	* MAINTAINERS: Add self to global reviewers list.

From-SVN: r263702
2018-08-21 13:49:30 +00:00
Jan Hubicka
f4290962f7 tree.c (find_decls_types_r): Do not check for redundant typedefs.
* tree.c (find_decls_types_r): Do not check for redundant typedefs.
	* tree.h (is_redundant_typedef): Remove.
	* dwarf2out.c (is_redundant_typedef): Turn into static function.

From-SVN: r263699
2018-08-21 12:32:53 +00:00
Pierre-Marie de Rodat
b649008486 [Ada] Bump copyright notices to 2018
2018-08-21  Pierre-Marie de Rodat  <derodat@adacore.com>

gcc/ada/

	* libgnarl/a-intnam__dragonfly.ads,
	libgnarl/s-osinte__dragonfly.adb,
	libgnarl/s-osinte__dragonfly.ads, libgnarl/s-osinte__gnu.adb,
	libgnarl/s-osinte__gnu.ads, libgnarl/s-osinte__hpux-dce.adb,
	libgnarl/s-osinte__hpux-dce.ads,
	libgnarl/s-taprop__hpux-dce.adb,
	libgnarl/s-taspri__hpux-dce.ads: Bump copyright notices to 2018.

From-SVN: r263698
2018-08-21 11:59:28 +00:00
Jan Hubicka
143b379d89 tree.c (free_lang_data_in_decl): Remove types from DECL_CONTEXT when possible.
* tree.c (free_lang_data_in_decl): Remove types from DECL_CONTEXT
	when possible.

From-SVN: r263697
2018-08-21 10:36:37 +00:00
Tamar Christina
daa9715842 Fix DSE big-endian subreg crash on AArch64.
This patch fixes an ICE that would happen when extract_low_bits
is called with modes for which you can't extract a valid subreg.
e.g. taking a 32 bytes subreg from a 48 byte mode.

The ICE happens because convert_modes which eventually calls
simplify_gen_subreg does not expect the convertion to fail.

The assert in gen_lowpart_general would then be hit.  The patch
changes it to validate the subreg before trying to convert the
modes.  If the subreg is not possible we return NULL_RTX and bail
out early.

gcc/ChangeLog:

2018-08-21  Tamar Christina  <tamar.christina@arm.com>

	* expmed.c (extract_low_bits): Reject invalid subregs early.

gcc/testsuite/ChangeLog:

2018-08-21  Tamar Christina  <tamar.christina@arm.com>

	* gcc.target/aarch64/large_struct_copy.c: New test.

From-SVN: r263696
2018-08-21 09:55:07 +00:00
Jonathan Wakely
25d4036370 Remove redundant { dg-do run } directives in tests
These tests accidentally had two dg-do directives. Only the second one
is needed.

	* testsuite/26_numerics/bit/bitops.count/countl_one.cc: Remove
	redundant dg-do directive.
	* testsuite/26_numerics/bit/bitops.count/countl_zero.cc: Likewise.
	* testsuite/26_numerics/bit/bitops.count/countr_one.cc: Likewise.
	* testsuite/26_numerics/bit/bitops.count/countr_zero.cc: Likewise.
	* testsuite/26_numerics/bit/bitops.count/popcount.cc: Likewise.

From-SVN: r263695
2018-08-21 10:34:26 +01:00
Szabolcs Nagy
2b96783aef Restrict the pr86763 test to *-*-linux* targets
clock_gettime is not available on some baremetal targets
and may require -lrt on some non-linux targets.

gcc/testsuite/ChangeLog:

	* g++.dg/torture/pr86763.C: Restrict to *-*-linux*.

From-SVN: r263694
2018-08-21 09:22:14 +00:00
Bernd Edlinger
7d4ae1fbbf re PR middle-end/86121 (missing -Wstringop-overflow on strcpy followed by strcat)
2018-08-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR middle-end/86121
        * tree-ssa-strlen.c (adjust_last_stmt): Avoid folding away undefined
        behaviour.

testsuite:
2018-08-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR middle-end/86121
        * gcc.dg/Wstringop-overflow-6.c: Remove xfail.

From-SVN: r263693
2018-08-21 08:56:11 +00:00
Rasmus Villemoes
eae016fc70 vxworks: don't define vxworks_asm_out_constructor when using .init_array
When the compiler is configured with --enable-initfini-array,
config/initfini-array.h gets included after config/vxworks.h by tm.h, so
the definitions of TARGET_ASM_CONSTRUTOR/TARGET_ASM_DESTRUCTOR in
vxworks.h get undone in initfini-array.h. Hence, we might as well not
define the vxworks_asm_out_* functions.

From-SVN: r263692
2018-08-21 08:52:40 +00:00
Rasmus Villemoes
ace193dc47 vxworks: enable use of .init_array/.fini_array for cdtors
The target OS actually runs all function pointers found in the _ctors
array when the module is loaded. So it is not that hard to make use of
the "modern" .init_array/.fini_array mechanism - it mostly just requires
a linker script adding the _ctors and _dtors symbols and terminating
LONG(0) entries.

Assume that if the user passed --enable-initfini-array when building
gcc, the rest of the toolchain (including the link spec and linker
script) is set up appropriately.

Note that configuring with --enable-initfini-array may prevent the -mrtp
mode from working, due to the (unconditional) use of .init_array.*
sections instead of .ctors.* - however, that is the case regardless of this
patch.

From-SVN: r263691
2018-08-21 08:50:27 +00:00
Rasmus Villemoes
9a5b8df700 libgcc: add crt{begin,end} for powerpc-wrs-vxworks target
In order to allow ZCX on VxWorks, we need the frame_dummy function to do
the register_frame_info(). So make sure crtbegin.o and crtend.o are
available for use with a custom spec file.

From-SVN: r263690
2018-08-21 08:49:15 +00:00
Rasmus Villemoes
6b19ff66a8 vxworks: add target/h/wrn/coreip to the set of system include paths
In order to build crtstuff.c, I need to ensure the headers in
target/h/wrn/coreip are also searched. Of course, that can be done
similar to how wrn/coreip gets manually added for libgcc, e.g. by adding

  CRTSTUFF_T_CFLAGS += -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip

But without target/h/wrn/coreip in the default search path, all
user-code that include <unistd.h> (crtstuff.c just being one such
example) will have to manually add an -isystem
flag adding the wrn/coreip directory: unistd.h include ioLib.h, which
has

#include "net/uio.h"

and that header is found in target/h/wrn/coreip. In other words, the
VxWorks system headers (at least for VxWorks 5.5) are written in a way
that assumes wrn/coreip is in the search path, so I think it makes sense
to have that by default.

It will change the search order for existing setups that pass
-I.../target/h/wrn/coreip (without -nostdinc), since that flag will now
be ignored. I can't know whether that will break anything, but I do
believe it makes sense to have the defaults actually usable without
expecting all invocations to add -I/-isystem flags.

From-SVN: r263689
2018-08-21 08:47:41 +00:00
Bernd Edlinger
6b2ffa6a42 gimple-ssa-sprintf.c (decl_constant_value): Remove.
2018-08-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * gimple-ssa-sprintf.c (decl_constant_value): Remove.
        (get_format_string): Refer to c_getstr.

From-SVN: r263688
2018-08-21 08:16:19 +00:00
Tom de Vries
efd9eb2979 [debug] Add debug and earlydebug dumps
With the introduction of early debug, we've added a phase in the compiler which
produces information which is not visible, unless we run the compiler in the
debugger and call debug_dwarf from dwarf2out_early_finish or some such.

This patch adds dumping of "early" and "final" debug info, into .earlydebug
and .debug dump files, enabled by -fdump-earlydebug and -fdumpdebug, such that
we can follow f.i. the upper bound of a vla type from early debug:
...
          DW_AT_upper_bound: location descriptor:
            (0x7f0d645b7550) DW_OP_GNU_variable_value , 0
...
to final debug:
...
          DW_AT_upper_bound: location descriptor:
            (0x7f0d645b7550) DW_OP_fbreg 18446744073709551592, 0
            (0x7f0d645b7a00) DW_OP_deref 8, 0
...
to -dA annotated assembly file:
...
        .uleb128 0x3    # DW_AT_upper_bound
        .byte   0x91    # DW_OP_fbreg
        .sleb128 -24
        .byte   0x6     # DW_OP_deref
...

The .debug file shows the same information as the annotated assembly, but in
the same format as the "early" debug info.

Bootstrapped and reg-tested on x86_64.

2018-08-21  Tom de Vries  <tdevries@suse.de>

	* cgraph.h (debuginfo_early_init, debuginfo_init, debuginfo_fini)
	(debuginfo_start, debuginfo_stop, debuginfo_early_start)
	(debuginfo_early_stop): Declare.
	* cgraphunit.c (debuginfo_early_init, debuginfo_init, debuginfo_fini)
	(debuginfo_start, debuginfo_stop, debuginfo_early_start)
	(debuginfo_early_stop): New function.
	(symbol_table::finalize_compilation_unit): Call debuginfo_early_start
	and debuginfo_early_stop.
	* dwarf2out.c (dwarf2out_finish, dwarf2out_early_finish): Dump dwarf.
	* toplev.c (compile_file): Call debuginfo_start and debuginfo_stop.
	(general_init): Call debuginfo_early_init.
	(finalize): Call debuginfo_fini.
	(do_compile): Call debuginfo_init.
	* doc/invoke.texi (@gccoptlist): Add -fdump-debug and
	-fdump-early-debug.
	(@item -fdump-debug, @item -fdump-earlydebug): Add.

	* lto.c (lto_main):  Call debuginfo_early_start and
	debuginfo_early_stop.

	* gcc.c-torture/unsorted/dump-noaddr.x: Use -gno-record-gcc-switches
	to avoid mismatch in .debug and .earlydebug dump files.

From-SVN: r263687
2018-08-21 07:39:29 +00:00
Tom de Vries
916f27adfd [debug] Respect fdump-noaddr and fdump-unnumbered in print_die
2018-08-21  Tom de Vries  <tdevries@suse.de>

	* dwarf2out.c (print_dw_val, print_loc_descr, print_die): Handle
	flag_dump_noaddr and flag_dump_unnumbered.

From-SVN: r263686
2018-08-21 07:39:17 +00:00
Aldy Hernandez
70eff70551 wide-int-range.cc (wide_int_range_abs): New.
* wide-int-range.cc (wide_int_range_abs): New.
	(wide_int_range_order_set): Rename from wide_int_range_min_max.
	* wide-int-range.h (wide_int_range_abs): New.
	(wide_int_range_min_max): New.
	* tree-vrp.c (extract_range_from_unary_expr): Rewrite ABS_EXPR
	case to call wide_int_range_abs.
	Rewrite MIN/MAX_EXPR to call wide_int_range_min_max.
	(extract_range_from_abs_expr): Delete.

From-SVN: r263685
2018-08-21 06:27:14 +00:00