1. 09 Oct, 2017 22 commits
    • Replace insn_rtx_cost with insn_cost and pattern_cost · d09e78e8
      This replaces insn_rtx_cost with insn_cost if an insn is readily
      available, and with pattern_cost otherwise.
      
      
      	* cfgrtl.c (rtl_account_profile_record): Replace insn_rtx_cost with
      	insn_cost.
      	* combine.c (uid_insn_cost): Adjust comment.
      	(combine_validate_cost): Adjust comment.  Use pattern_cost instead
      	of insn_rtx_cost
      	(combine_instructions): Use insn_cost instead of insn_rtx_cost.
      	* dse.c (find_shift_sequence): Ditto.
      	* ifcvt.c (cheap_bb_rtx_cost_p): Ditto.
      	(bb_valid_for_noce_process_p): Use pattern_cost.
      	* rtl.h (insn_rtx_cost): Delete.
      	(pattern_cost): New prototype.
      	(insn_cost): New prototype.
      	* rtlanal.c (insn_rtx_cost): Rename to...
      	(pattern_cost): ... this.
      	(insn_cost): New.
      
      From-SVN: r253560
      Segher Boessenkool committed
    • [multiple changes] · 90e491a7
      2017-10-09  Bob Duff  <duff@adacore.com>
      
      	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): Use
      	Defining_Identifier (Obj_Decl) in two places, because it might have
      	changed.
      	* exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Deal with cases
      	involving 'Input on (not visibly) derived types.
      
      2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* atree.adb: Add new soft link Rewriting_Proc.
      	(Rewrite): Invoke the subprogram attached to the rewriting soft link.
      	(Set_Rewriting_Proc): New routine.
      	* attree.ads: Add new access-to-subprogram type Rewrite_Proc.
      	(Set_Rewriting_Proc): New routine.
      	* checks.adb (Install_Primitive_Elaboration_Check): Use 'E' character
      	for *E*laboration flag to maintain consistency with other elaboration
      	flag generating subprograms.
      	* debug.adb: Document the new usage of flag -gnatdL.
      	* einfo.adb: Node19 is now used as Receiving_Entry.  Node39 is now used
      	as Protected_Subprogram.  Flag148 is now used as
      	Is_Elaboration_Checks_OK_Id.  Flag302 is now used as
      	Is_Initial_Condition_Procedure.
      	(Is_Elaboration_Checks_OK_Id): New routine.
      	(Is_Initial_Condition_Procedure): New routine.
      	(Protected_Subprogram): New routine.
      	(Receiving_Entry): New routine.
      	(SPARK_Pragma): Update assertion.
      	(SPARK_Pragma_Inherited): Update assertion.
      	(Suppress_Elaboration_Warnings): Removed.
      	(Set_Is_Elaboration_Checks_OK_Id): New routine.
      	(Set_Is_Initial_Condition_Procedure): New routine.
      	(Set_Protected_Subprogram): New routine.
      	(Set_Receiving_Entry): New routine.
      	(Set_SPARK_Pragma): Update assertion.
      	(Set_SPARK_Pragma_Inherited): Update assertion.
      	(Write_Entity_Flags): Update the output for Flag148 and Flag302.
      	(Write_Field19_Name): Add output for Receiving_Entry.
      	(Write_Field39_Name): Add output for Protected_Subprogram.
      	(Write_Field40_Name): Update the output for SPARK_Pragma.
      	* einfo.ads: New attributes Is_Elaboration_Checks_OK_Id,
      	Is_Initial_Condition_Procedure, Protected_Subprogram, Receiving_Entry.
      	Remove attribute Suppress_Elaboration_Warnings.  Update the stricture
      	of various entities.
      	(Is_Elaboration_Checks_OK_Id): New routine along with pragma Inline.
      	(Is_Initial_Condition_Procedure): New routine along with pragma Inline.
      	(Protected_Subprogram): New routine along with pragma Inline.
      	(Receiving_Entry): New routine along with pragma Inline.
      	(Suppress_Elaboration_Warnings): Removed.
      	(Set_Is_Elaboration_Checks_OK_Id): New routine along with pragma
      	Inline.
      	(Set_Is_Initial_Condition_Procedure): New routine along with pragma
      	Inline.
      	(Set_Protected_Subprogram): New routine along with pragma Inline.
      	(Set_Receiving_Entry): New routine along with pragma Inline.
      	(Set_Suppress_Elaboration_Warnings): Removed.
      	* exp_ch3.adb (Build_Init_Procedure): Use name _Finalizer to maintain
      	consistency with other finalizer generating subprograms.
      	(Default_Initialize_Object): Mark the block which wraps the call to
      	finalize as being part of initialization.
      	* exp_ch7.adb (Expand_N_Package_Declaration): Directly expand pragma
      	Initial_Condition.
      	(Expand_N_Package_Body): Directly expand pragma Initial_Condition.
      	(Next_Suitable_Statement): Update the comment on usage. Skip over call
      	markers generated by the ABE mechanism.
      	* exp_ch9.adb (Activation_Call_Loc): New routine.
      	(Add_Accept): Link the accept procedure to the original entry.
      	(Build_Protected_Sub_Specification): Link the protected or unprotected
      	version to the original subprogram.
      	(Build_Task_Activation_Call): Code cleanup. Use a source location which
      	is very close to the "begin" or "end" keywords when generating the
      	activation call.
      	* exp_prag.adb (Expand_Pragma_Initial_Condition): Reimplemented.
      	* exp_spark.adb (Expand_SPARK): Use Expand_SPARK_N_Loop_Statement to
      	process loops.
      	(Expand_SPARK_N_Loop_Statement): New routine.
      	(Expand_SPARK_N_Object_Declaration): Code cleanup. Partially insert the
      	call to the Default_Initial_Condition procedure.
      	(Expand_SPARK_Op_Ne): Renamed to Expand_SPARK_N_Op_Ne.
      	* exp_util.adb (Build_DIC_Procedure_Body): Capture the SPARK_Mode in
      	effect.
      	(Build_DIC_Procedure_Declaration): Capture the SPARK_Mode in effect.
      	(Insert_Actions): Add processing for N_Call_Marker.
      	(Kill_Dead_Code): Explicitly kill an elaboration scenario.
      	* exp_util.ads (Make_Invariant_Call): Update the comment on usage.
      	* frontend.adb: Initialize Sem_Elab. Process all saved top level
      	elaboration scenarios for ABE issues.
      	* gcc-interface/trans.c (gnat_to_gnu): Add processing for N_Call_Marker
      	nodes.
      	* lib.adb (Earlier_In_Extended_Unit): New variant.
      	* sem.adb (Analyze): Ignore N_Call_Marker nodes.
      	(Preanalysis_Active): New routine.
      	* sem.ads (Preanalysis_Active): New routine.
      	* sem_attr.adb (Analyze_Access_Attribute): Save certain
      	elaboration-related attributes. Save the scenario for ABE processing.
      	* sem_ch3.adb (Analyze_Object_Declaration): Save the SPARK mode in
      	effect. Save certain elaboration-related attributes.
      	* sem_ch5.adb (Analyze_Assignment): Save certain elaboration-related
      	attributes. Save the scenario for ABE processing.
      	* sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Save the SPARK
      	mode in effect. Save certain elaboration-related attributes.
      	(Analyze_Subprogram_Body_Helper): Skip N_Call_Marker nodes when
      	locating the first real statement.
      	(Analyze_Subprogram_Declaration): Save the SPARK mode in effect. Save
      	certain elaboration-related attributes.
      	* sem_ch7.adb (Analyze_Package_Declaration): Do not suppress
      	elaboration warnings.
      	* sem_ch8.adb (Attribute_Renaming): Mark a subprogram body which was
      	generated for purposes of wrapping an attribute used as a generic
      	actual.
      	(Find_Direct_Name): Save certain elaboration-related attributes. Save
      	the scenario for ABE processing.
      	(Find_Expanded_Name): Save certain elaboration-related attributes. Save
      	the scenario for ABE processing.
      	* sem_ch9.adb (Analyze_Entry_Declaration): Save certain
      	elaboration-related attributes.
      	(Analyze_Requeue): Save certain elaboration-related attributes. Save
      	the scenario for ABE processing.
      	(Analyze_Single_Task_Declaration): Save certain elaboration-related
      	attributes.
      	(Analyze_Task_Type_Declaration): Save certain elaboration-related
      	attributes.
      	* sem_ch12.adb (Analyze_Generic_Package_Declaration): Save certain
      	elaboration-related attributes.
      	(Analyze_Generic_Subprogram_Declaration): Save the SPARK mode in
      	effect. Save certain elaboration-related attributes.
      	(Analyze_Package_Instantiation): Save certain elaboration-related
      	attributes.  Save the scenario for ABE processing. Create completing
      	bodies in case the instantiation results in a guaranteed ABE.
      	(Analyze_Subprogram_Instantiation): Save certain elaboration-related
      	attributes Save the scenario for ABE processing. Create a completing
      	body in case the instantiation results in a guaranteed ABE.
      	(Provide_Completing_Bodies): New routine.
      	* sem_elab.ads: Brand new implementation.
      	* sem_prag.adb (Analyze_Pragma, cases Elaborate, Elaborate_All,
      	Elaborate_Body): Do not suppress elaboration warnings.
      	* sem_res.adb (Make_Call_Into_Operator): Set the parent field of the
      	operator.
      	(Resolve_Call): Save certain elaboration-related attributes. Save the
      	scenario for ABE processing.
      	(Resolve_Entity_Name): Do not perform any ABE processing here.
      	(Resolve_Entry_Call): Inherit certain attributes from the original call.
      	* sem_util.adb (Begin_Keyword_Location): New routine.
      	(Defining_Entity): Update the parameter profile. Add processing for
      	concurrent subunits that are rewritten as null statements.
      	(End_Keyword_Location): New routine.
      	(Find_Enclosing_Scope): New routine.
      	(In_Instance_Visible_Part): Code cleanup.
      	(In_Subtree): Update the parameter profile. Add new version.
      	(Is_Preelaborable_Aggregate): New routine.
      	(Is_Preelaborable_Construct): New routine.
      	(Mark_Elaboration_Attributes): New routine.
      	(Scope_Within): Update the parameter profile.
      	(Scope_Within_Or_Same): Update the parameter profile.
      	* sem_util.ads (Begin_Keyword_Location): New routine.
      	(Defining_Entity): Update the parameter profile and the comment on
      	usage.
      	(End_Keyword_Location): New routine.
      	(Find_Enclosing_Scope): New routine.
      	(In_Instance_Visible_Part): Update the parameter profile.
      	(In_Subtree): Update the parameter profile. Add new version.
      	(Is_Preelaborable_Aggregate): New routine.
      	(Is_Preelaborable_Construct): New routine.
      	(Mark_Elaboration_Attributes): New routine.
      	(Scope_Within): Update the parameter profile and the comment on usage.
      	(Scope_Within_Or_Same): Update the parameter profile and the comment on
      	usage.
      	* sem_warn.adb (Check_Infinite_Loop_Warning): Use Has_Condition_Actions
      	to determine whether a loop has meaningful condition actions.
      	(Has_Condition_Actions): New routine.
      	* sinfo.adb (ABE_Is_Certain): Removed.
      	(Is_Declaration_Level_Node): New routine.
      	(Is_Dispatching_Call): New routine.
      	(Is_Elaboration_Checks_OK_Node): New routine.
      	(Is_Initialization_Block): New routine.
      	(Is_Known_Guaranteed_ABE): New routine.
      	(Is_Recorded_Scenario): New routine.
      	(Is_Source_Call): New routine.
      	(Is_SPARK_Mode_On_Node): New routine.
      	(No_Elaboration_Check): Removed.
      	(Target): New routine.
      	(Was_Attribute_Reference): New routine.
      	(Set_ABE_Is_Certain): Removed.
      	(Set_Is_Declaration_Level_Node): New routine.
      	(Set_Is_Dispatching_Call): New routine.
      	(Set_Is_Elaboration_Checks_OK_Node): New routine.
      	(Set_Is_Initialization_Block): New routine.
      	(Set_Is_Known_Guaranteed_ABE): New routine.
      	(Set_Is_Recorded_Scenario): New routine.
      	(Set_Is_Source_Call): New routine.
      	(Set_Is_SPARK_Mode_On_Node): New routine.
      	(Set_No_Elaboration_Check): Removed.
      	(Set_Target): New routine.
      	(Set_Was_Attribute_Reference): New routine.
      	* sinfo.ads: Remove attribute ABE_Is_Certain.  Attribute
      	Do_Discriminant_Check now utilizes Flag3.  Attribute
      	No_Side_Effect_Removal now utilizes Flag17.  Add new node
      	N_Call_Marker.  Update the structure of various nodes.
      	(ABE_Is_Certain): Removed along with pragma Inline.
      	(Is_Declaration_Level_Node): New routine along with pragma Inline.
      	(Is_Dispatching_Call): New routine along with pragma Inline.
      	(Is_Elaboration_Checks_OK_Node): New routine along with pragma Inline.
      	(Is_Initialization_Block): New routine along with pragma Inline.
      	(Is_Known_Guaranteed_ABE): New routine along with pragma Inline.
      	(Is_Recorded_Scenario): New routine along with pragma Inline.
      	(Is_Source_Call): New routine along with pragma Inline.
      	(Is_SPARK_Mode_On_Node): New routine along with pragma Inline.
      	(No_Elaboration_Check): Removed along with pragma Inline.
      	(Target): New routine along with pragma Inline.
      	(Was_Attribute_Reference): New routine along with pragma Inline.
      	(Set_ABE_Is_Certain): Removed along with pragma Inline.
      	(Set_Is_Declaration_Level_Node): New routine along with pragma Inline.
      	(Set_Is_Dispatching_Call): New routine along with pragma Inline.
      	(Set_Is_Elaboration_Checks_OK_Node): New routine along with pragma
      	Inline.
      	(Set_Is_Initialization_Block): New routine along with pragma Inline.
      	(Set_Is_Known_Guaranteed_ABE): New routine along with pragma Inline.
      	(Set_Is_Recorded_Scenario): New routine along with pragma Inline.
      	(Set_Is_Source_Call): New routine along with pragma Inline.
      	(Set_Is_SPARK_Mode_On_Node): New routine along with pragma Inline.
      	(Set_No_Elaboration_Check): Removed along with pragma Inline.
      	(Set_Target): New routine along with pragma Inline.
      	(Set_Was_Attribute_Reference): New routine along with pragma Inline.
      	* sprint.adb (Sprint_Node_Actual): Add an entry for N_Call_Marker.
      
      From-SVN: r253559
      Pierre-Marie de Rodat committed
    • i386.md (*jcc_2): Remove insn pattern. · 341af81e
      	* config/i386/i386.md (*jcc_2): Remove insn pattern.
      	(*jcc<mode>_0_r_i387): Ditto.
      	(*jccxf_r_i387): Ditto.
      	(*jcc<mode>_r_i387): Ditto.
      	(*jccu<mode>_r_i387): Ditto.
      	(*jcc<X87MODEF:mode>_<SWI24:mode>_r_i387): Ditto.
      	(*jcc): Rename from *jcc_1.
      
      From-SVN: r253558
      Uros Bizjak committed
    • exp_ch7.adb (Create_Finalizer): Suppress checks within the finalizer. · b3db0949
      2017-10-09  Bob Duff  <duff@adacore.com>
      
      	* exp_ch7.adb (Create_Finalizer): Suppress checks within the finalizer.
      
      2017-10-09  Bob Duff  <duff@adacore.com>
      
      	* freeze.ads: Minor comment fixed.
      
      From-SVN: r253557
      Bob Duff committed
    • <forgot to do svn add on the amo.h file> · bd8cd113
      [gcc]
      2017-10-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	* config/rs6000/amo.h: New include file to provide ISA 3.0 atomic
      	memory operation instruction support.
      	* config.gcc (powerpc*-*-*): Include amo.h as an extra header.
      	(rs6000-ibm-aix[789]*): Likewise.
      	* doc/extend.texi (PowerPC Atomic Memory Operation Functions):
      	Document new functions.
      
      [gcc/testsuite]
      2017-10-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	* gcc.target/powerpc/amo1.c: New test.
      	* gcc.target/powerpc/amo2.c: Likewise.
      
      From-SVN: r253556
      Michael Meissner committed
    • rs6000-p8swap.c (rs6000_analyze_swaps): Process deferred rescans after the… · 3395b656
      rs6000-p8swap.c (rs6000_analyze_swaps): Process deferred rescans after the lvx/stvx recombination pre-pass.
      
      2017-10-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
      
      	* config/rs6000/rs6000-p8swap.c (rs6000_analyze_swaps): Process
      	deferred rescans after the lvx/stvx recombination pre-pass.
      
      From-SVN: r253555
      Bill Schmidt committed
    • exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Take care of unchecked... · 5d57846b
      gcc/ada/
      
      2017-10-09  Bob Duff  <duff@adacore.com>
      
      	* exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Take
      	care of unchecked conversions in addition to regular conversions. This
      	takes care of a case where a type is derived from a private untagged
      	type that is completed by a tagged controlled type.
      
      2017-10-09  Ed Schonberg  <schonberg@adacore.com>
      
      	* exp_disp.adb (Build_Class_Wide_Check, Replace_Formals): When
      	rewriting a class-wide condition, handle properly the case where the
      	controlling argument of the operation to which the condition applies is
      	an access to a tagged type, and the condition includes a dispatching
      	call with an implicit dereference.
      
      gcc/testsuite/
      
      2017-10-09  Ed Schonberg  <schonberg@adacore.com>
      
      	* gnat.dg/class_wide4.adb, gnat.dg/class_wide4_pkg.ads,
      	gnat.dg/class_wide4_pkg2.ads: New testcase.
      
      From-SVN: r253554
      Pierre-Marie de Rodat committed
    • amo.h: New include file to provide ISA 3.0 atomic memory operation instruction support. · a1df6521
      [gcc]
      2017-10-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	* config/rs6000/amo.h: New include file to provide ISA 3.0 atomic
      	memory operation instruction support.
      	* config.gcc (powerpc*-*-*): Include amo.h as an extra header.
      	(rs6000-ibm-aix[789]*): Likewise.
      	* doc/extend.texi (PowerPC Atomic Memory Operation Functions):
      	Document new functions.
      
      [gcc/testsuite]
      2017-10-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	* gcc.target/powerpc/amo1.c: New test.
      	* gcc.target/powerpc/amo2.c: Likewise.
      
      From-SVN: r253552
      Michael Meissner committed
    • exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Remove the code at the end of... · 15529d0a
      gcc/ada/
      
      2017-10-09  Bob Duff  <duff@adacore.com>
      
      	* exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Remove
      	the code at the end of this procedure that was setting the type of a
      	class-wide object to the specific type returned by a function call.
      	Treat this case as indefinite instead.
      
      2017-10-09  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_ch4.adb (Try_Class_Wide_Operation, Traverse_Homonyms):
      	Suppress spurious ambiguity error when two traversals of the homonym
      	chain (first directly, and then through an examination of relevant
      	interfaces) retrieve the same operation, when other irrelevant homonyms
      	of the operatioh are also present.
      
      2017-10-09  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_util.adb (Object_Access_Level): If the object is the return
      	statement of an expression function, return the level of the function.
      	This is relevant when the object involves an implicit conversion
      	between access types and the expression function is a completion, which
      	forces the analysis of the expression before rewriting it as a body, so
      	that freeze nodes can appear in the proper scope.
      
      2017-10-09  Bob Duff  <duff@adacore.com>
      
      	* atree.adb: Make nnd apply to everything "interesting", including
      	Rewrite.  Remove rrd.
      
      2017-10-09  Javier Miranda  <miranda@adacore.com>
      
      	* exp_ch3.adb (Expand_N_Object_Declaration): Avoid never-ending loop
      	processing the declaration of the dummy object internally created by
      	Make_DT to compute the offset to the top of components referencing
      	secondary dispatch tables.
      	(Initialize_Tag): Do not initialize the offset-to-top field if it has
      	been initialized initialized.
      	* exp_disp.ads (Building_Static_Secondary_DT): New subprogram.
      	* exp_disp.adb (Building_Static_Secondary_DT): New subprogram.
      	(Make_DT): Create a dummy constant object if we can statically build
      	secondary dispatch tables.
      	(Make_Secondary_DT): For statically allocated secondary dispatch tables
      	use the dummy object to compute the offset-to-top field value by means
      	of the attribute 'Position.
      
      gcc/testsuite/
      
      2017-10-09  Ed Schonberg  <schonberg@adacore.com>
      
      	* gnat.dg/class_wide3.adb, gnat.dg/class_wide3_pkg.ads: New testcase.
      
      From-SVN: r253550
      Pierre-Marie de Rodat committed
    • exp_ch6.adb (Expand_N_Extended_Return_Statement): Add self-checking code so if… · 5168a9b3
      exp_ch6.adb (Expand_N_Extended_Return_Statement): Add self-checking code so if BIPAlloc is not passed in...
      
      gcc/ada/
      
      2017-10-09  Bob Duff  <duff@adacore.com>
      
      	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Add self-checking
      	code so if BIPAlloc is not passed in, it will likely raise
      	Program_Error instead of cause miscellaneous chaos.
      	(Is_Build_In_Place_Result_Type): Return False if not Expander_Active,
      	as for the other Is_B-I-P... functions.
      	* sem_aggr.adb (Resolve_Extension_Aggregate): For an extension
      	aggregate whose ancestor part is a build-in-place call returning a
      	nonlimited type, transform the assignment to the ancestor part to use a
      	temp.
      	* sem_ch3.adb (Build_Itype_Reference): Handle the case where we're
      	creating an Itype for a library unit entity.
      	(Check_Initialization): Avoid spurious error message on
      	internally-generated call.
      	* sem_ch5.adb (Analyze_Assignment): Handle the case where the
      	right-hand side is a build-in-place call. This didn't happen when b-i-p
      	was only for limited types.
      	* sem_ch6.adb (Create_Extra_Formals): Remove assumption that b-i-p
      	implies >= Ada 2005.
      	* sem_ch7.adb (Scan_Subprogram_Refs): Avoid traversing the same nodes
      	repeatedly.
      	* sem_util.adb (Next_Actual): Handle case of build-in-place call.
      
      2017-10-09  Arnaud Charlet  <charlet@adacore.com>
      
      	* doc/gnat_ugn/gnat_and_program_execution.rst: Minor edit.
      
      2017-10-09  Piotr Trojanek  <trojanek@adacore.com>
      
      	* libgnarl/s-taprob.adb: Minor whitespace fix.
      
      2017-10-09  Bob Duff  <duff@adacore.com>
      
      	* namet.ads: Minor comment fix.
      
      2017-10-09  Piotr Trojanek  <trojanek@adacore.com>
      
      	* sem_aux.adb (Unit_Declaration_Node): Detect protected declarations,
      	just like other program units listed in Ada RM 10.1(1).
      
      2017-10-09  Justin Squirek  <squirek@adacore.com>
      
      	* sem_ch8.adb (Update_Chain_In_Scope): Modify warning messages.
      
      2017-10-09  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_ch12.adb (Analyze_Associations, Check_Generic_Parent): If an
      	actual for a formal package is an instantiation of a child unit, create
      	a freeze node for the instance of the parent if it appears in the same
      	scope and is not frozen yet.
      
      2017-10-09  Pierre-Marie de Rodat  <derodat@adacore.com>
      
      	* exp_atag.ads, libgnat/a-tags.adb, libgnat/a-tags.ads: Enhance
      	in-source documentation for tagged types's Offset_To_Top.
      
      2017-10-09  Bob Duff  <duff@adacore.com>
      
      	* exp_ch3.adb (Build_Assignment): Parameter name N was somewhat
      	confusing.  Same for N_Loc.  Remove assumption that b-i-p implies
      	limited.  This is for the case of a function call that occurs as the
      	default for a record component.
      	(Expand_N_Object_Declaration): Deal with the case where expansion has
      	created an object declaration initialized with something like
      	F(...)'Reference.
      	* exp_ch3.adb: Minor reformatting.
      
      2017-10-09  Ed Schonberg  <schonberg@adacore.com>
      
      	* exp_attr.adb (Expand_Attribute_Reference, case 'Valid): The prefix of
      	the attribute is an object, but it may appear within a conversion. The
      	object itself must be retrieved when generating the range test that
      	implements the validity check on a scalar type.
      
      gcc/testsuite/
      
      2017-10-09  Ed Schonberg  <schonberg@adacore.com>
      
      	* gnat.dg/validity_check2.adb, gnat.dg/validity_check2_pkg.ads:
      	New testcase.
      
      From-SVN: r253548
      Pierre-Marie de Rodat committed
    • re PR tree-optimization/82397 (qsort comparator non-negative on sorted output: 1… · 18b4306c
      re PR tree-optimization/82397 (qsort comparator non-negative on sorted output: 1 in vect_analyze_data_ref_accesses)
      
      2017-10-09  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/82397
      	* tree-data-ref.c (data_ref_compare_tree): Make sure to return
      	equality only for semantically equal trees.
      
      From-SVN: r253547
      Richard Biener committed
    • re PR tree-optimization/82449 (code-gen error in get_rename_from_scev) · 7668b0a6
      2017-10-09  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/82449
      	* sese.c (scev_analyzable_p): Check whether the SCEV is linear.
      	* tree-chrec.h (evolution_function_is_constant_p): Adjust to
      	allow constant addresses.
      	* tree-chrec.c (scev_is_linear_expression): Constant evolutions
      	are linear.
      
      	* gfortran.dg/graphite/pr82449.f: New testcase.
      
      From-SVN: r253546
      Richard Biener committed
    • [BRIGFE] Support BRIG_KIND_NONE directives. · 14108eda
      These directives are legal everywhere.  They can be used to
      patch away BRIG entries at the binary level.
      
      Also add extra error detection for zeroed regions: make sure
      the byteCount field is never zero.
      
      The call code still failed a few PRM test cases. Now all PRM
      branch cases pass again.
      
      From-SVN: r253545
      Pekka Jääskeläinen committed
    • S/390: Fix vec_nabs and vec_vfi builtin flags · 63eea5dc
      gcc/ChangeLog:
      
      2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/s390-builtins.def (vec_nabs, vec_vfi): Fix builtin
      	flags.
      
      From-SVN: r253544
      Andreas Krebbel committed
    • S/390: PR82463: Fix vec_madd header file definition · ad2c91b2
      The builtin was not correctly defined in the vecintrin.h header file.
      
      gcc/testsuite/ChangeLog:
      
      2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	PR target/82463
      	* gcc.target/s390/zvector/pr82463.c: New test.
      
      gcc/ChangeLog:
      
      2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	PR target/82463
      	* config/s390/vecintrin.h (vec_madd, vec_msub): Fix macro
      	definitions.
      
      From-SVN: r253543
      Andreas Krebbel committed
    • S/390: PR82465: Fix vec_sqrt builtin flags · 3141e768
      The vector double variant is available with z13.  A wrong flag in the
      s390-builtins.def file triggered an error when compiling for z13.
      
      gcc/testsuite/ChangeLog:
      
      2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	PR target/82465
      	* gcc.target/s390/zvector/pr82465.c: New test.
      
      gcc/ChangeLog:
      
      2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	PR target/82465
      	* config/s390/s390-builtins.def (vec_sqrt): Fix builtin flags.
      
      From-SVN: r253542
      Andreas Krebbel committed
    • re PR target/82464 (s390x z14: vector float: invalid parameter combination for… · 85f59ae7
      re PR target/82464 (s390x z14: vector float: invalid parameter combination for intrinsic '__builtin_s390_vec_xor')
      
      	PR target/82464
      	* config/s390/s390-builtins.def (s390_vec_xor_flt_a,
      	s390_vec_xor_flt_b, s390_vec_xor_flt_c): New.
      
      From-SVN: r253541
      Jakub Jelinek committed
    • Fix ssa-dse-26.c · 8d9c7f8a
      Add missing -fno-short-enums to ensure this test passes on arm-none-eabi
      which uses short enums.
      
          gcc/testsuite/
      	* gcc.dg/tree-ssa/ssa-dse-26.c (dg-options): Add -fno-short-enums.
      
      From-SVN: r253540
      Wilco Dijkstra committed
    • Allow non-wi <op> wi · 7b27cb4b
      This patch uses global rather than member operators for wide-int.h,
      so that the first operand can be a non-wide-int type.
      
      The patch also removes the and_not and or_not member functions.
      It was already inconsistent to have member functions for these
      two operations (one of which was never used) and not other wi::
      ones like udiv.  After the operator change, we'd have the additional
      inconsistency that "non-wi & wi" would work but "non-wi.and_not (wi)"
      wouldn't.
      
      2017-10-09  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* wide-int.h (WI_BINARY_OPERATOR_RESULT): New macro.
      	(WI_BINARY_PREDICATE_RESULT): Likewise.
      	(wi::binary_traits::operator_result): New type.
      	(wi::binary_traits::predicate_result): Likewise.
      	(generic_wide_int::operator~, unary generic_wide_int::operator-)
      	(generic_wide_int::operator==, generic_wide_int::operator!=)
      	(generic_wide_int::operator&, generic_wide_int::and_not)
      	(generic_wide_int::operator|, generic_wide_int::or_not)
      	(generic_wide_int::operator^, generic_wide_int::operator+
      	(binary generic_wide_int::operator-, generic_wide_int::operator*):
      	Delete.
      	(operator~, unary operator-, operator==, operator!=, operator&)
      	(operator|, operator^, operator+, binary operator-, operator*): New
      	functions.
      	* expr.c (get_inner_reference): Use wi::bit_and_not.
      	* fold-const.c (fold_binary_loc): Likewise.
      	* ipa-prop.c (ipa_compute_jump_functions_for_edge): Likewise.
      	* tree-ssa-ccp.c (get_value_from_alignment): Likewise.
      	(bit_value_binop): Likewise.
      	* tree-ssa-math-opts.c (find_bswap_or_nop_load): Likewise.
      	* tree-vrp.c (zero_nonzero_bits_from_vr): Likewise.
      	(extract_range_from_binary_expr_1): Likewise.
      	(masked_increment): Likewise.
      	(simplify_bit_ops_using_ranges): Likewise.
      
      From-SVN: r253539
      Richard Sandiford committed
    • [PR 82416] Do not extend operands to at least 32 bits · 191411e4
      2017-10-09  Martin Jambor  <mjambor@suse.cz>
      
      	PR hsa/82416
      gcc/
      	* hsa-common.h (hsa_op_with_type): New method extend_int_to_32bit.
      	* hsa-gen.c (hsa_extend_inttype_to_32bit): New function.
      	(hsa_type_for_scalar_tree_type): Use it.  Always force min32int for
      	COMPLEX types.
      	(hsa_fixup_mov_insn_type): New function.
      	(hsa_op_with_type::get_in_type): Use it.
      	(hsa_build_append_simple_mov): Likewise.  Allow sub-32bit
      	immediates in an assert.
      	(hsa_op_with_type::extend_int_to_32bit): New method.
      	(gen_hsa_insns_for_bitfield): Fixup instruction and intermediary
      	types.  Convert to dest type if necessary.
      	(gen_hsa_insns_for_bitfield_load): Fixup load type if necessary.
      	(reg_for_gimple_ssa): Pass false as min32int to
      	hsa_type_for_scalar_tree_type.
      	(gen_hsa_addr): Fixup type when creating addresable temporary.
      	(gen_hsa_cmp_insn_from_gimple): Extend operands if necessary.
      	(gen_hsa_unary_operation): Extend operands and convert to dest type if
      	necessary.  Call hsa_fixup_mov_insn_type.
      	(gen_hsa_binary_operation): Changed operand types to hsa_op_with_type,
      	extend operands and convert to dest type if necessary.
      	(gen_hsa_insns_for_operation_assignment): Extend operands and convert
      	to dest type if necessary.
      	(set_output_in_type): Call hsa_fixup_mov_insn_type.  Just ude dest
      	if conversion nt necessary and size matches.
      	(gen_hsa_insns_for_load): Call hsa_fixup_mov_insn_type, convert
      	to dest type if necessary.
      	(gen_hsa_insns_for_store): Call hsa_fixup_mov_insn_type.
      	(gen_hsa_insns_for_switch_stmt): Likewise. Also extend operands if
      	necessary.
      	(gen_hsa_clrsb): Likewise.
      	(gen_hsa_ffs): Likewise.
      	(gen_hsa_divmod): Extend operands and convert to dest type if
      	necessary.
      	(gen_hsa_atomic_for_builtin): Change type of op to hsa_op_with_type.
      
      libgomp/
      	* testsuite/libgomp.hsa.c/pr82416.c: New test.
      
      From-SVN: r253538
      Martin Jambor committed
    • Fix gcc.dg/cold-1.c · b7807e11
      2017-10-09  Tom de Vries  <tom@codesourcery.com>
      
      	* gcc.dg/cold-1.c (foo1): Fix warning line number.  Make warning line
      	number relative.
      	(abort): Declare.
      
      From-SVN: r253537
      Tom de Vries committed
    • Daily bump. · 86a6f91e
      From-SVN: r253536
      GCC Administrator committed
  2. 08 Oct, 2017 14 commits
  3. 07 Oct, 2017 4 commits
    • builtins.def (BUILT_IN_SETJMP): Declare as library builtin instead of GCC builtin if... · 06fc54dd
      	* builtins.def (BUILT_IN_SETJMP): Declare as library builtin instead
      	of GCC builtin if DONT_USE_BUILTIN_SETJMP is defined.
      	* except.c (sjlj_emit_function_enter): If DONT_USE_BUILTIN_SETJMP is
      	defined, force the creation of a new block for a dispatch label.
      
      From-SVN: r253515
      Eric Botcazou committed
    • re PR fortran/82375 (PDT components in PDT declarations fail to compile) · 2fcd5884
      2017-10-07  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/82375
      	* class.c (gfc_find_derived_vtab): Return NULL for a passed
      	pdt template to prevent bad procedures from being written.
      	* decl.c (gfc_get_pdt_instance): Do not use the default
      	initializer for pointer and allocatable pdt type components. If
      	the component is allocatbale, set the 'alloc_comp' attribute of
      	'instance'.
      	* module.c : Add a prototype for 'mio_actual_arglist'. Add a
      	boolean argument 'pdt'.
      	(mio_component): Call it for the parameter list of pdt type
      	components with 'pdt' set to true.
      	(mio_actual_arg): Add the boolean 'pdt' and, if it is set, call
      	mio_integer for the 'spec_type'.
      	(mio_actual_arglist): Add the boolean 'pdt' and use it in the
      	call to mio_actual_arg.
      	(mio_expr, mio_omp_udr_expr): Call mio_actual_arglist with
      	'pdt' set false.
      	* resolve.c (get_pdt_spec_expr): Add the parameter name to the
      	KIND parameter error.
      	(get_pdt_constructor): Check that cons->expr is non-null.
      	* trans-array.c (structure_alloc_comps): For deallocation of
      	allocatable components, ensure that parameterized components
      	are deallocated first. Likewise, when parameterized components
      	are allocated, nullify allocatable components first. Do not
      	recurse into pointer or allocatable pdt components while
      	allocating or deallocating parameterized components. Test that
      	parameterized arrays or strings are allocated before freeing
      	them.
      	(gfc_trans_pointer_assignment): Call the new function. Tidy up
      	a minor whitespace issue.
      	trans-decl.c (gfc_trans_deferred_vars): Set 'tmp' to NULL_TREE
      	to prevent the expression from being used a second time.
      
      2017-10-07  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/82375
      	* gfortran.dg/pdt_13.f03 : New test.
      	* gfortran.dg/pdt_14.f03 : New test.
      	* gfortran.dg/pdt_15.f03 : New test.
      
      From-SVN: r253514
      Paul Thomas committed
    • invoke.texi (Wsuggest-attribute=cold): Document. · 12b9f3ac
      	* invoke.texi (Wsuggest-attribute=cold): Document.
      	* common.opt (Wsuggest-attribute=cold): New
      	* ipa-pure-const.c (warn_function_cold): New function.
      	* predict.c (compute_function_frequency): Use it.
      	* predict.h (warn_function_cold): Declare.
      
      	* gcc.dg/cold-1.c: New testcase.
      
      From-SVN: r253513
      Jan Hubicka committed
    • tree-switch-conversion.c (do_jump_if_equal, [...]): Update profile. · 59e2f25e
      
      	* tree-switch-conversion.c (do_jump_if_equal, emit_cmp_and_jump_insns):
      	Update profile.
      
      From-SVN: r253512
      Jan Hubicka committed