aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2019-07-04[Ada] Minor reformattingHristian Kirtchev17-110/+120
2019-07-04 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * exp_ch3.adb, exp_ch4.adb, exp_ch4.ads, exp_ch5.adb, exp_ch7.adb, exp_ch9.adb, exp_ch11.adb, exp_unst.adb, rtsfind.ads, sem_attr.adb, sem_ch10.adb, sem_ch12.adb, sem_ch13.adb, sem_dim.adb, sem_disp.adb, xref_lib.adb: Minor reformatting. From-SVN: r273070
2019-07-04[Ada] Add preconditions in Ada.Task_IdentificationJoffrey Huguet2-0/+15
This patch is needed to check for the Ada RM C.7.1(15) rule in SPARK. 2019-07-04 Joffrey Huguet <huguet@adacore.com> gcc/ada/ * libgnarl/a-taside.ads: Add assertion policy to ignore preconditions. (Abort_Task, Is_Terminated, Is_Callable): Add preconditions. From-SVN: r273069
2019-07-04[Ada] Fix capitalization and parenthesis glitches in GNAT RMEric Botcazou3-8/+12
2019-07-04 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * doc/gnat_rm/implementation_defined_pragmas.rst: Fix capitalization and parenthesis glitches. * gnat_rm.texi: Regenerate. From-SVN: r273068
2019-07-04[Ada] Spurious error on instantiation and limited_with_clauseEd Schonberg2-6/+31
This patch fixes a spurious error during the construction of an instance body in the inlining phase of the frontend, when the package declaration for the main unit has a limited_with_clause on some unit P, and the main unit itself does not have a corresponding regular with_clause, but some other unit in the context has with_clause that has compiled P. P must be removed from visibility to prevent conflicts with homonyms in the generic body to be instantiated. The following must compile quietly: gcc -c gpr2-project-view.adb ---- package GNATCOLL is end GNATCOLL; package GNATCOLL.Refcount is generic type Element_Type (<>) is private; package Shared_Pointers is type Ref is tagged private; type Element_Access is access all Element_Type; type Reference_Type (Element : access Element_Type) is limited null record; function Unchecked_Get (Self : Ref'Class) return Element_Access; function Get (Self : Ref'Class) return Reference_Type is ((Element => Unchecked_Get (Self))); private type Ref is tagged null record; end Shared_Pointers; type Refcounted is abstract tagged null record; generic type Encapsulated is abstract new Refcounted with private; package Smart_Pointers is type Encapsulated_Access is access all Encapsulated'Class; type Ref is tagged private; procedure Set (Self : in out Ref; Data : Encapsulated'Class); procedure Set (Self : in out Ref; Data : access Encapsulated'Class); private type Ref is tagged null record; end Smart_Pointers; end GNATCOLL.Refcount; ---- package body GNATCOLL.Refcount is package body Shared_Pointers is function Unchecked_Get (Self : Ref'Class) return Element_Access is begin return null; end Unchecked_Get; end Shared_Pointers; package body Smart_Pointers is procedure Set (Self : in out Ref; Data : access Encapsulated'Class) is begin null; end Set; procedure Set (Self : in out Ref; Data : Encapsulated'Class) is Tmp : constant Encapsulated_Access := new Encapsulated'Class'(Data); begin Set (Self, Tmp); end Set; end Smart_Pointers; end GNATCOLL.Refcount; ---- package GPR2 is end GPR2; ---- package GPR2.Parser is end GPR2.Parser; ---- with GPR_Parser.Analysis; package GPR2.Parser.Project is end GPR2.Parser.Project; ---- package GPR2.Project is end GPR2.Project; ---- with GPR2.Parser.Project; package GPR2.Project.Configuration is end GPR2.Project.Configuration; ---- with GPR2.Project.Configuration; with GPR2.Unit.Set; package GPR2.Project.Definition is end GPR2.Project.Definition; ---- limited with GPR2.Unit.Set; package GPR2.Project.View is procedure Require_Body; end GPR2.Project.View; ---- with GPR2.Project.Definition; package body GPR2.Project.View is procedure Require_Body is null; end GPR2.Project.View; ---- package GPR2.Unit is end GPR2.Unit; package GPR2.Unit.Set is end GPR2.Unit.Set; ... package GPR_Parser is end GPR_Parser; ---- with GNATCOLL.Refcount; package GPR_Parser.Analysis is type Unit_Provider_Interface is null record; package Unit_Provider_References is new GNATCOLL.Refcount.Shared_Pointers (Unit_Provider_Interface); end GPR_Parser.Analysis; 2019-07-04 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch10.adb (Remove_Context_Clauses): Handle properly the removal of a limited_with_clause which appears in the library unit oF the main unit, when some other unit in the context has a regular with_clause on the same unit, to prevent spurious visibility errors in the subsequent analysis of pending instance bodies. From-SVN: r273067
2019-07-04[Ada] Management of internal data structures in Sem_ElabHristian Kirtchev2-36/+176
This patch modifies the timing of Sem_Elab's internal data structure creation and destruction, and adds the concept of "active" elaboration compiler phase. The elaboration phase of the compiler is active after the frontend initializes Sem_Elab. It is at this point that all internal data structures of Sem_Elab are created and become ready to accept data. The elaboration phase of the compiler is completed after all elaboration scenarios are examined, all ABE checks are intalled, and diagnostics are emitted. It is at this point that all internal data structures of Sem_Elab are destroyed. Further attempts to reintroduce data into Sem_Elab by subsequent compiler phases are cut off. Compilation using GCC unaffected. 2019-07-04 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * sem_elab.adb: Add new type Elaboration_Phase_Status along with a global to keep track of the elaboration phase status. Initialize all internal data structures to Nil for services Elaborated_Units, Internal_Representation, and Scenario_Storage. (Build_Call_Marker): Do not create a call marker when the elaboration phase is not active. (Build_Variable_Reference_Marker): Do not create a call marker when the elaboration phase is not active. (Check_Elaboration_Scenarios): Destroy all internal structures when the elaboration phase does not have to run. Do not execute when the elaboration phase is not active. (Elaboration_Phase_Active): New routine. (Finalize_All_Data_Structures): New routine. (Initialize): Initialize all internal data structures and signal that the elaboration phase has started. (Initialize_All_Data_Structures): New routine. (Initialize_Elaborated_Units): Initialize all internal data structures. (Initialize_Internal_Representation): Initialize all internal data structures. (Initialize_Scenario_Storage): Initialize all internal data structures. (Kill_Elaboration_Scenario): Do not execute when the elaboration phase is not active. (Set_Elaboration_Phase): New routine. (Update_Elaboration_Scenario): Do not execute when the elaboration phase is not active. From-SVN: r273066
2019-07-04[Ada] Expr. func. with private formal rejected in nested Ghost packageGary Dismukes6-2/+41
The compiler prematurely freezes a private type that is the type of a formal parameter of an expression function declared within a nested, inactivated Ghost package, resulting is an error complaining that the private type must be fully defined at that point. This is fixed by testing for Ignored_Ghost_Entity in the condition guarding the code that performs Mask_Unfrozen_Types for an expression function without a separate declaration, ensuring that the expression function's profile isn't frozen prematurely. 2019-07-04 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * sem_ch6.adb (Analyze_Subprogram_Body_Helper): The special treatment of calling Mask_Unfrozen_Types must also be done in the case of an Ignored_Ghost_Entity, because Expander_Active is False in that case. gcc/testsuite/ * gnat.dg/ghost5.adb, gnat.dg/ghost5.ads, gnat.dg/ghost5_parent.ads: New testcase. From-SVN: r273065
2019-07-04[Ada] SPARK_Mode Off now allowed inside subprogramYannick Moy4-1/+39
The rule on SPARK_Mode have been modified so that it is now possible to have a subprogram or package declared with SPARK_Mode Off inside a subprogram. 2019-07-04 Yannick Moy <moy@adacore.com> gcc/ada/ * sem_prag.adb (Check_Library_Level_Entity): Update for new rule on SPARK_Mode. gcc/testsuite/ * gnat.dg/spark3.adb: New testcase. From-SVN: r273064
2019-07-04[Ada] Spurious error on incomplete tagged formal parameterJustin Squirek5-0/+35
This patch fixes an issue whereby a check for competing controlling formals led to a spurious dispatching error due to an incomplete type being used within a subprogram specification. 2019-07-04 Justin Squirek <squirek@adacore.com> gcc/ada/ * sem_disp.adb (Check_Controlling_Formals): Obtain the full view before type comparison. gcc/testsuite/ * gnat.dg/tagged2.adb, gnat.dg/tagged2.ads: New testcase. From-SVN: r273063
2019-07-04[Ada] Bug in composition of equality for variant recordsEd Schonberg8-59/+223
This patch fixes an omission in the construction of equality routines for variant records, to take into account user-defined equality functions for components of the record. Previously the constructed equality routine for variant records used the predefined equality for all components, When composavility of equality was introduced for untagged records, expansion of record equality was modified properly, but not for the case of variant records, which use a different and more complex process to build the equality function. 2019-07-04 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_ch4.ads, exp_ch4.adb (Build_Eq_Call): New visible subprogram, extracted from Expand_Composite_Equality, to handle properly the composition of equality for variant record types. * exp_ch3.adb (MAke_Eq_If): Use Build_Eq_Call for each component, to handle properly the case of a component with a user-defined equality. Revert to predefined equality if the user-defined operation is abstract, to maintain compatibility with older versions, gcc/testsuite/ * gnat.dg/equal6.adb, gnat.dg/equal6_types.adb, gnat.dg/equal6_types.ads: New testcase. From-SVN: r273062
2019-07-04[Ada] Missing actual for generated initialization procedureJustin Squirek5-17/+41
This patch fixes an issue whereby the use of an allocator with a composite type containing null-excluding components may lead to a compile time error due to incorrect code generation. 2019-07-04 Justin Squirek <squirek@adacore.com> gcc/ada/ * exp_ch3.adb (Build_Initialization_Call): Fixup *_skip_null_excluding_check argument to handle new default. (Init_Formals): Make *_skip_null_excluding_check formal default to False * exp_ch4.adb (Expand_N_Allocator): Add comment to note heavy code duplication gcc/testsuite/ * gnat.dg/allocator.adb: New testcase. From-SVN: r273061
2019-07-04[Ada] Do not create a master unless Tasking_AllowedBob Duff2-0/+6
2019-07-04 Bob Duff <duff@adacore.com> gcc/ada/ * sem_ch3.adb (Access_Definition): Do not create a master unless Tasking_Allowed. Otherwise, this fails on restricted runtimes. From-SVN: r273060
2019-07-04[Ada] Assertion failure on Default_Initial_ConditionHristian Kirtchev6-0/+49
This patch prevents the association of a Default_Initial_Condition with an incomplete type whose full view is the private type or private extension subject to the aspect/pragma. 2019-07-04 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * sem_util.adb (Propagate_DIC_Attributes): Do not propagate the Default_Initial_Condition attributes to an incomplete type. gcc/testsuite/ * gnat.dg/default_initial_condition.adb, gnat.dg/default_initial_condition_pack.adb, gnat.dg/default_initial_condition_pack.ads: New testcase. From-SVN: r273059
2019-07-04[Ada] Spurious error on 'First in a generic contextEd Schonberg5-1/+52
This patch fixes a spurious error on an attribute reference within an aspect specification for an unconstrained array type when the corresponding type declaration appears within a generic unit. 2019-07-04 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_attr.adb (Check_Array_Type): An array type attribute such as 'First can be applied to an unconstrained array tyope when the attribute reference appears within an aspect specification and the prefix is a current instance, given that the prefix of the attribute will become a formal of the subprogram that implements the aspect (typically a predicate check). gcc/testsuite/ * gnat.dg/aspect2.adb, gnat.dg/aspect2.ads: New testcase. From-SVN: r273058
2019-07-04[Ada] Minor typo fixesPiotr Trojanek2-2/+7
2019-07-04 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_util.adb (Yields_Synchronized_Object): Fix typos in comments. From-SVN: r273057
2019-07-04[Ada] Synchronized object definition in SPARK updatedYannick Moy6-1/+34
The definition of what types yield synchronized objected in SPARK has been updated to see through the privacy boundary. 2019-07-04 Yannick Moy <moy@adacore.com> gcc/ada/ * sem_util.adb (Yields_Synchronized_Object): Adapt to new SPARK rule. gcc/testsuite/ * gnat.dg/synchronized2.adb, gnat.dg/synchronized2.ads, gnat.dg/synchronized2_pkg.ads: New testcase. From-SVN: r273056
2019-07-04[Ada] Fix crash in SPARK ownership checkingYannick Moy2-3/+11
Analysis could crash on extended return of a non-deep type, now fixed. This has no impact on compilation. 2019-07-04 Yannick Moy <moy@adacore.com> gcc/ada/ * sem_spark.adb (Check_Statement): Only check permission of object in extended return when it is of a deep type. From-SVN: r273055
2019-07-04[Ada] Hang on expansion of library-level instantiationJustin Squirek7-8/+71
This patch fixes an issue whereby instantiation of a generic at the library-level may cause a hang or crash during compilation due to inappropriate expansion of generic actuals. 2019-07-04 Justin Squirek <squirek@adacore.com> gcc/ada/ * sem_ch12.adb (Perform_Appropriate_Analysis): Added for selecting which type of analysis based on wheither the instantiation is a generic at the library-level. In which case expansion during analysis. (Preanalyze_Actuals): Modify calls to Analyze to use the new routine. gcc/testsuite/ * gnat.dg/generic_inst4.adb, gnat.dg/generic_inst4_gen.ads, gnat.dg/generic_inst4_inst.ads, gnat.dg/generic_inst4_typ.ads: New testcase. From-SVN: r273054
2019-07-04[Ada] Unnesting: handle conditional expressionsEd Schonberg2-0/+31
2019-07-04 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_unst.adb: Handle conditional expressions. From-SVN: r273053
2019-07-04[Ada] Skip code not in SPARK for ownership analysisYannick Moy2-28/+49
Ownership rules for pointer support should only apply to code marked in SPARK. There is no impact on compilation. 2019-07-04 Yannick Moy <moy@adacore.com> gcc/ada/ * sem_spark.adb (Check_Package_Spec, Check_Package_Body): Only analyze parts of the code marked in SPARK. From-SVN: r273052
2019-07-04[Ada] Minor reformattingHristian Kirtchev6-30/+37
2019-07-04 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * erroutc.adb, exp_aggr.adb, inline.adb, opt.adb, sem_ch3.adb: Minor reformatting. From-SVN: r273051
2019-07-04[Ada] Better error messages for ownership errors in SPARKYannick Moy2-62/+196
When SPARK code does not follow the ownership rules of SPARK RM 3.10, the error message now points to a location explaining why the object has a more restricted permission than the expected one. There is no impact on compilation. 2019-07-04 Yannick Moy <moy@adacore.com> gcc/ada/ * sem_spark.adb (Explanation, Get_Expl): New functions to get the explanation for a permission mismatch. (Perm_Error, Perm_Mismatch, Perm_Error_Loop_Exit): Take explanation into account for issuing a more precise error message. (Set_Perm_Prefixes, Set_Perm_Extensions, Set_Perm_Extensions_Move): Pass suitable argument for the explanation node. From-SVN: r273050
2019-07-04[Ada] CCG: reduce generated temporariesArnaud Charlet2-289/+296
2019-07-04 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * exp_aggr.adb (In_Place_Assign_OK): Moved to top level and add support for record aggregates. (Component_Check): Use Is_CCG_Supported_Aggregate instead of a similar local predicate. (Convert_To_Assignments): Take advantage of In_Place_Assign_OK predicate when possible. (Is_CCG_Supported_Aggregate): Return False for records with representation clauses and fix the logic for dealing with nested aggregates. From-SVN: r273049
2019-07-04[Ada] Keep assertions in internal units enabled for GNATprovePiotr Trojanek2-1/+12
In GNATprove mode the assertion policy is now always enabled, even when analysing internal units. Otherwise, assertion expressions (e.g. Default_Initial_Condition) in internal units (e.g. Ada.Text_IO) disappear in the semantic analysis phase of the frontend and the GNATprove backend can't see them. No frontend test provided, because only the GNATprove backend is affected (and there appear to be no difference in the output with -gnatG switch, because the expansion of Default_Initial_Condition is not attached to the AST). 2019-07-04 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * opt.adb (Set_Config_Switches): Keep assertions policy as enabled when analysing internal units in GNATprove mode. From-SVN: r273048
2019-07-04[Ada] CCG: restrict folding for boolean testsArnaud Charlet2-1/+36
2019-07-04 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * exp_ch4.adb (Expand_Short_Circuit_Operator): Strip N_Variable_Reference_Marker when checking for the presence of actions. From-SVN: r273047
2019-07-04[Ada] Reduce emitted code size in CCG for aggregate assignmentArnaud Charlet2-1/+7
2019-07-04 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * exp_aggr.adb (Check_Component): Take into account type conversions. From-SVN: r273046
2019-07-04[Ada] GNAT.Sockets: fix socket timeout on recent Windows versionsDmitriy Anisimkov7-108/+238
2019-07-04 Dmitriy Anisimkov <anisimko@adacore.com> gcc/ada/ * doc/gnat_ugn/platform_specific_information.rst: Document Windows socket timeout particularity. * gnat_ugn.texi: Regenerate. * gsocket.h: Include versionhelpers.h. * socket.c (__gnat_minus_500ms): New function. * libgnat/g-sothco.ads (Minus_500ms_Windows_Timeout): New imported function. * libgnat/g-socket.adb (Set_Socket_Option): Refactor to remove 500ms from the requested timeout only on old Windows version. From-SVN: r273045
2019-07-04[Ada] Get_Scos: Remove bogus, dead codeThomas Quinot2-6/+4
The nonsensical snippet was found by Codepeer. No behavior change. 2019-07-04 Thomas Quinot <quinot@adacore.com> gcc/ada/ * get_scos.adb: Remove bogus, dead code. From-SVN: r273044
2019-07-04[Ada] Spurious dimensionality error on aggregate with "others" assoc.Ed Schonberg6-3/+126
This patch fixes a spurious dimensionality error on an array aggregate with a single "others' clause whose expression is a dimensioned entity, The expansion of the aggregate may create copies of the expression, and the dimensionality check must use the type of the expression to retrieve the proper dimension information to check against the dimensions of the array component type. 2019-07-04 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_dim.adb (Analyze_Dimension_Array_Aggregate): If the component is an entity name, its dimensions are those of its type. gcc/testsuite/ * gnat.dg/dimensions2.adb, gnat.dg/dimensions2_phys.ads, gnat.dg/dimensions2_real_numbers.ads: New testcase. From-SVN: r273043
2019-07-04tree-ssa-sccvn.h (vn_reference_lookup): Add last_vuse_ptr argument.Richard Biener3-27/+47
2019-07-04 Richard Biener <rguenther@suse.de> * tree-ssa-sccvn.h (vn_reference_lookup): Add last_vuse_ptr argument. * tree-ssa-sccvn.c (last_vuse_ptr, vn_walk_kind): Move globals into... (struct vn_walk_cb_data): New callback data struct. (vn_reference_lookup_2): Adjust. (vn_reference_lookup_3): Likewise. (vn_reference_lookup_pieces): Likewise. (vn_reference_lookup): Likewise, get last_vuse_ptr argument. (visit_reference_op_load): Adjust. From-SVN: r273042
2019-07-04re PR tree-optimization/91063 (ICE in set_vinfo_for_stmt, at ↵Jakub Jelinek4-3/+36
tree-vectorizer.c:676) PR tree-optimization/91063 * tree-vect-stmts.c (vect_init_vector): Call gsi_remove to remove stmt from stmts sequence before calling vect_init_vector_1. Formatting fix. * gcc.dg/gomp/pr91063.c: New test. From-SVN: r273041
2019-07-04re PR target/88833 ([SVE] Redundant moves for WHILELO-based loops)Prathamesh Kulkarni6-45/+136
2019-07-04 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> PR target/88833 * fwprop.c (reg_single_def_p): New function. (propagate_rtx_1): Add unconditional else inside RTX_EXTRA case. (forward_propagate_into): New parameter reg_prop_only with default value false. Propagate def's src into loop only if SET_SRC and SET_DEST of def_set have single definitions. Likewise if reg_prop_only is set to true. (fwprop): New param fwprop_addr_p. Integrate fwprop_addr into fwprop. (fwprop_addr): Remove. (pass_rtl_fwprop_addr::execute): Call fwprop with arg set to true. (pass_rtl_fwprop::execute): Call fwprop with arg set to false. * simplify-rtx.c (simplify_subreg): Add case for vector comparison. * config/i386/sse.md (UNSPEC_BLENDV): Adjust pattern. testsuite/ * gfortran.dg/pr88833.f90: New test. From-SVN: r273040
2019-07-04re PR tree-optimization/91069 (Miscompare of 453.povray since r272843)Jakub Jelinek2-2/+8
PR middle-end/91069 * gcc.dg/pr91069.c (v2df): Use 2 * sizeof (double) instead of hardcoded 16 for better portability. (v2di): Change from long vector to long long vector. Use 2 * sizeof (long long) instead of hardcoded 16. From-SVN: r273039
2019-07-04omp-low.c (lower_omp_scan): Call lower_omp on stmt's body in worksharing ↵Jakub Jelinek2-1/+6
loop scans. * omp-low.c (lower_omp_scan): Call lower_omp on stmt's body in worksharing loop scans. From-SVN: r273038
2019-07-04re PR tree-optimization/91074 (c-c++-common/gomp/scan-3.c fails with ICE ↵Jakub Jelinek2-0/+5
starting with r272958) PR tree-optimization/91074 * omp-low.c (lower_omp_for_scan): Set DECL_GIMPLE_REG_P on cplx temporary. From-SVN: r273037
2019-07-04re PR rtl-optimization/90756 (g++ ICE in convert_move, at expr.c:218 on i686 ↵Jakub Jelinek4-10/+38
and s390x) PR rtl-optimization/90756 * explow.c (promote_ssa_mode): Always use TYPE_MODE, don't bypass it for VECTOR_TYPE_P. * gcc.dg/pr90756.c: New test. From-SVN: r273036
2019-07-04compiler: optimize 0,1,2-case select statementIan Lance Taylor5-5/+285
For a select statement with zero-, one-, or two-case with a default case, we can generate simpler code instead of calling the generic selectgo. A zero-case select is just blocking the execution. A one-case select is mostly just executing the case. A two-case select with a default case is a non-blocking send or receive. We add these special cases for lowering a select statement. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/184998 From-SVN: r273034
2019-07-04[MIPS][Testsuite] Specify msa-fmadd.c abis.Chenghua Xu3-1/+108
gcc/testsuite/ * gcc.target/mips/mips-fmadd.c: Rename to ... * gcc.target/mips/mips-fmadd-o32.c: ... Here; add abi=32. * gcc.target/mips/mips-fmadd-n64.c: New. From-SVN: r273033
2019-07-04compiler: fix indentation of select statement AST dumpIan Lance Taylor2-1/+2
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/184997 From-SVN: r273032
2019-07-04Daily bump.GCC Administrator1-1/+1
From-SVN: r273031
2019-07-03compiler: set varargs lowered for imported call expressionsIan Lance Taylor2-2/+2
Fix compiler buglet: varargs lowering happens before inlinable function bodies are written out to export data, so set the "varargs lowered" flag on call expressions that we import. Fixes golang/go#32922 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/184919 From-SVN: r273026
2019-07-03[AArch64] Remove constraint strings from define_expand constructsDennis Zhang5-370/+382
A number of AArch64 define_expand patterns have specified constraints for their operands. But the constraint strings are ignored at expand time and are therefore redundant/useless. We now avoid specifying constraints in new define_expands, but we should clean up the existing define_expand definitions. For example, the constraint "=w" is removed in the following case: (define_expand "sqrt<mode>2" [(set (match_operand:GPF_F16 0 "register_operand" "=w") The "" marks with an empty constraint in define_expand are removed as well. 2019-07-03 Dennis Zhang <dennis.zhang@arm.com> gcc/ * config/aarch64/aarch64.md: Remove redundant constraints from define_expand but keep some patterns untouched if they are specially selected by TARGET_SECONDARY_RELOAD hook. * config/aarch64/aarch64-sve.md: Likewise. * config/aarch64/atomics.md: Remove redundant constraints from define_expand. * config/aarch64/aarch64-simd.md: Likewise. From-SVN: r273021
2019-07-03[Darwin] Revise pie,no-pie and rdynamic driver specs.Iain Sandoe2-13/+20
Processing these early and pushing the corresponding Xlinker lines has the effect that the driver then supposes that there are linker inputs, and causes a link line to be created when it is not needed The solution is to place these drive specs into the link spec and claim them at the end of that. 2019-07-03 Iain Sandoe <iain@sandoe.co.uk> * config/darwin.h (DRIVER_SELF_SPECS): Remove the linker cases. (RDYNAMIC): Rename to, DARWIN_RDYNAMIC. (DARWIN_PIE_SPEC, DARWIN_NOPIE_SPEC): Adjust to remove the Xlinker clauses. (LINK_COMMAND_SPEC_A): Add DARWIN_RDYNAMIC, DARWIN_PIE_SPEC and DARWIN_NOPIE_SPEC. From-SVN: r273017
2019-07-03[Darwin] Some TLC for older Darwin versions.Iain Sandoe3-30/+75
The library handling and some of the options for creating the crts for the older PPC Darwin versions had bit-rotted somewhat. This adjusts the build criteria for the crts to avoid newer ld64 versions warnings about mismatches in build and object versions. Added to some of the comments that it's documented why the specs are as they are. 2019-07-03 Iain Sandoe <iain@sandoe.co.uk> gcc/ * config/darwin.h (REAL_LIBGCC_SPEC): Adjust for earlier Darwin. (STARTFILE_SPEC): Split crt3 into a separate spec. (DARWIN_EXTRA_SPECS): Add crt2 and crt3 spec. (DARWIN_CRT2_SPEC): New. (DARWIN_CRT3_SPEC): New. (MIN_LD64_OMIT_STUBS): Revise to 62.1. * config/rs6000/darwin.h (DARWIN_CRT2_SPEC): Revise conditions. (DARWIN_CRT3_SPEC): New. libgcc/ 2019-07-03 Iain Sandoe <iain@sandoe.co.uk> * config.host (powerpc-*-darwin*,powerpc64-*-darwin*): Revise crt list. * config/rs6000/t-darwin: Build crt3_2 for older systems. Revise mmacosx-version-min for crts to run across all system versions. * config/rs6000/t-darwin64 (LIB2ADD): Remove. * config/t-darwin: Revise mmacosx-version-min for crts to run across system versions >= 10.4. From-SVN: r273016
2019-07-03altivec.md (altivec_mov<mode>, [...]): Change the RTL attribute "length" ↵Michael Meissner4-43/+70
from "4" to "*" to allow the length attribute... 2019-07-03 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/altivec.md (altivec_mov<mode>, VM2 iterator): Change the RTL attribute "length" from "4" to "*" to allow the length attribute to be adjusted automatically for prefixed load, store, and add immediate instructions. * config/rs6000/rs6000.md (extendhi<mode>2, EXTHI iterator): Likewise. (extendsi<mode>2, EXTSI iterator): Likewise. (movsi_internal1): Likewise. (movsi_from_sf): Likewise. (movdi_from_sf_zero_ext): Likewise. (mov<mode>_internal): Likewise. (movcc_internal1, QHI iterator): Likewise. (mov<mode>_softfloat, FMOVE32 iterator): Likewise. (movsf_from_si): Likewise. (mov<mode>_hardfloat32, FMOVE64 iterator): Likewise. (mov<mode>_softfloat64, FMOVE64 iterator): Likewise. (mov<mode>, FMOVE128 iterator): Likewise. (movdi_internal64): Likewise. * config/rs6000/vsx.md (vsx_le_permute_<mode>, VSX_TI iterator): Likewise. (vsx_le_undo_permute_<mode>, VSX_TI iterator): Likewise. (vsx_mov<mode>_64bit, VSX_M iterator): Likewise. (vsx_mov<mode>_32bit, VSX_M iterator): Likewise. (vsx_splat_v4sf): Likewise. From-SVN: r273013
2019-07-03Fix store merging tests on ArmWilco Dijkstra5-6/+13
Fix the failing store merging test on Arm. Aligning variables fixes a few cases, otherwise disable the test on Arm. All store merging tests now pass. Committed as obvious. testsuite/ * gcc.dg/store_merging_27.c: Fix test for Arm. * gcc.dg/store_merging_28.c: Likewise. * gcc.dg/store_merging_29.c: Likewise. * gcc.dg/tree-ssa/dump-6.c: Likewise. From-SVN: r273011
2019-07-03compiler: include transitive imports in the type descriptor listIan Lance Taylor5-18/+80
In CL 179598, we were using Gogo::packages_, when compiling the main package, as the list of packages of which we need to register the type descriptors. This is not complete. It only includes main's direct import and one-level indirect imports. It does not include all the packages transitively imported. To fix that, we need to track all the transitive imports. We have almost already done that, for init functions. However, there may be packages that don't need init functions but do need to register type descriptors. For them, we add a dummy init function to its export data. So when we compile the main package we will see all the transitive imports. The dummy init functions are not real functions and are not called. Fixes golang/go#32901. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/184717 From-SVN: r273009
2019-07-03PR debug/90981 Empty .debug_addr crashes -gdwarf-5 -gsplit-dwarfMark Wielaard3-25/+45
Even if there was no, or an empty address list we would try to generate a header for the .debug_addr section with -gdwarf-5 and -gsplit-dwarf. The skeleton DIE would also get a (dangling) DW_AT_addr_base in that case. PR debug/90981 * dwarf2out.c (add_top_level_skeleton_die_attrs): Only add DW_AT_addr_base if there is actually a .debug_addr section with addresses. (output_addr_table): Add DWARF5 table header generation here after checking there are actually any addresses from... (dwarf2out_finish): ...here. * testsuite/g++.dg/pr90981.C: New test. From-SVN: r273008
2019-07-03re PR tree-optimization/91069 (Miscompare of 453.povray since r272843)Richard Biener4-1/+32
2019-07-03 Richard Biener <rguenther@suse.de> PR middle-end/91069 * match.pd (vec_perm -> bit_insert): Fix element read from first vector. * gcc.dg/pr91069.c: New testcase. From-SVN: r273007
2019-07-03Add dbgcnt for gimple_match and generic_match.Martin Liska5-2/+15
2019-07-03 Martin Liska <mliska@suse.cz> * dbgcnt.def (DEBUG_COUNTER): Add match debug counter. * genmatch.c (dt_simplify::gen_1): Generate dbgcnt condition. * generic-match-head.c: Include dbgcnt.h. * gimple-match-head.c: Likewise. From-SVN: r273006
2019-07-03Rename SINGE_VALUE to TOPN_VALUES counters.Martin Liska7-45/+71
2019-07-03 Martin Liska <mliska@suse.cz> * gcov-counter.def (GCOV_COUNTER_V_SINGLE): Remove. (GCOV_COUNTER_V_TOPN): New. (GCOV_COUNTER_V_INDIR): Use _topn. * gcov-io.h (GCOV_DISK_SINGLE_VALUES): Remove. (GCOV_TOPN_VALUES): New. (GCOV_SINGLE_VALUE_COUNTERS): Remove. (GCOV_TOPN_VALUES_COUNTERS): New. * profile.c (instrument_values): Use HIST_TYPE_TOPN_VALUES. * tree-profile.c: (gimple_init_gcov_profiler): Rename variables from one_value to topn_values. (gimple_gen_one_value_profiler): Remove. (gimple_gen_topn_values_profiler): New function. * value-prof.c (dump_histogram_value): Use TOPN_VALUES names instead of SINGLE_VALUE. (stream_out_histogram_value): Likewise. (stream_in_histogram_value): Likewise. (get_most_common_single_value): Likewise. (gimple_divmod_fixed_value_transform): Likewise. (gimple_stringops_transform): Likewise. (gimple_divmod_values_to_profile): Likewise. (gimple_stringops_values_to_profile): Likewise. (gimple_find_values_to_profile): Likewise. * value-prof.h (enum hist_type): Rename to TOPN. (gimple_gen_one_value_profiler): Remove. (gimple_gen_topn_values_profiler): New. 2019-07-03 Martin Liska <mliska@suse.cz> * Makefile.in: Use topn_values instead of one_value names. * libgcov-merge.c (__gcov_merge_single): Move to ... (__gcov_merge_topn): ... this. (merge_single_value_set): Move to ... (merge_topn_values_set): ... this. * libgcov-profiler.c (__gcov_one_value_profiler_body): Move to ... (__gcov_topn_values_profiler_body): ... this. (__gcov_one_value_profiler_v2): Move to ... (__gcov_topn_values_profiler): ... this. (__gcov_one_value_profiler_v2_atomic): Move to ... (__gcov_topn_values_profiler_atomic): ... this. (__gcov_indirect_call_profiler_v4): Remove. * libgcov-util.c (__gcov_single_counter_op): Move to ... (__gcov_topn_counter_op): ... this. * libgcov.h (L_gcov_merge_single): Remove. (L_gcov_merge_topn): New. (__gcov_merge_single): Remove. (__gcov_merge_topn): New. (__gcov_one_value_profiler_v2): Move to .. (__gcov_topn_values_profiler): ... this. (__gcov_one_value_profiler_v2_atomic): Move to ... (__gcov_topn_values_profiler_atomic): ... this. From-SVN: r273005