gcc.git
7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 10:30:55 +0000 (12:30 +0200)]
[multiple changes]

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* sem_prag.adb (Set_Convention_From_Pragma): Cleanup code for
convention Stdcall, which has a number of exceptions. Convention
is legal on a component declaration whose type is an anonymous
access to subprogram.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_ch4.adb: sem_ch4.adb Various reformattings.
(Try_One_Prefix_Interpretation): Use the base type when dealing
with a subtype created for purposes of constraining a private
type with discriminants.

2017-04-25  Javier Miranda  <miranda@adacore.com>

* einfo.ads, einfo.adb (Has_Private_Extension): new attribute.
* warnsw.ads, warnsw.adb (All_Warnings): Set warning on late
dispatching primitives (Restore_Warnings): Restore warning on
late dispatching primitives (Save_Warnings): Save warning on late
dispatching primitives (Do_Warning_Switch): Use -gnatw.j/-gnatw.J
to enable/disable this warning.
(WA_Warnings): Set warning on late dispatching primitives.
* sem_ch3.adb (Analyze_Private_Extension_Declaration): Remember
that its parent type has a private extension.
* sem_disp.adb (Warn_On_Late_Primitive_After_Private_Extension):
New subprogram.
* usage.adb: Document -gnatw.j and -gnatw.J.

From-SVN: r247176

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 10:26:52 +0000 (12:26 +0200)]
[multiple changes]

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_ch7.adb, checks.adb, sem_prag.adb, eval_fat.adb: Minor
reformatting.

2017-04-25  Bob Duff  <duff@adacore.com>

* binde.adb (Validate): Do not pass dynamic strings
to pragma Assert, because older compilers do not support that.

2017-04-25  Bob Duff  <duff@adacore.com>

* s-fileio.adb (Close): When a temp file is
closed, delete it and clean up its Temp_File_Record immediately,
rather than waiting until later.
(Temp_File_Record): Add File
component, so Close can know which Temp_File_Record corresponds
to the file being closed.
(Delete): Don't delete temp files,
because they are deleted by Close.
(Open): Set the File component
of Temp_File_Record. This requires moving the creation of the
Temp_File_Record to the end, after the AFCB has been created.

From-SVN: r247175

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 10:11:06 +0000 (12:11 +0200)]
[multiple changes]

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

* checks.adb (Insert_Valid_Check): Do not generate
a validity check when inside a generic.

2017-04-25  Yannick Moy  <moy@adacore.com>

* sem_res.adb (Resolve_Type_Conversion): Fix bad logic.

2017-04-25  Arnaud Charlet  <charlet@adacore.com>

* snames.ads-tmpl (Snames): More names for detecting predefined
potentially blocking subprograms.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* sem_prag.adb (Analyze_Pre_Post_Condition): The rules
concerning inheritance of class-wide preconditions do not apply
to postconditions.

2017-04-25  Bob Duff  <duff@adacore.com>

* s-ficobl.ads: Minor comment fix.

From-SVN: r247174

7 years agochecks.adb (Apply_Scalar_Range_Check): Analyze precisely conversions from float to...
Yannick Moy [Tue, 25 Apr 2017 10:09:31 +0000 (10:09 +0000)]
checks.adb (Apply_Scalar_Range_Check): Analyze precisely conversions from float to integer in GNATprove mode.

2017-04-25  Yannick Moy  <moy@adacore.com>

* checks.adb (Apply_Scalar_Range_Check): Analyze precisely
conversions from float to integer in GNATprove mode.
(Apply_Type_Conversion_Checks): Make sure in GNATprove mode
to call Apply_Type_Conversion_Checks, so that range checks
are properly positioned when needed on conversions, including
when converting from float to integer. (Determine_Range): In
GNATprove mode, take into account the possibility of conversion
from float to integer.
* sem_res.adb (Resolve_Type_Conversion): Only enforce range
check on conversions from fixed-point to integer, not anymore
on conversions from floating-point to integer, when in GNATprove
mode.

From-SVN: r247173

7 years agochecks.adb (Determine_Range_R): Special case type conversions from integer to float...
Yannick Moy [Tue, 25 Apr 2017 10:08:00 +0000 (10:08 +0000)]
checks.adb (Determine_Range_R): Special case type conversions from integer to float in order to get bounds in...

2017-04-25  Yannick Moy  <moy@adacore.com>

* checks.adb (Determine_Range_R): Special case type conversions
from integer to float in order to get bounds in that case too.
* eval_fat.adb (Machine): Avoid issuing warnings in GNATprove
mode, for computations involved in interval checking.

From-SVN: r247172

7 years agore PR bootstrap/80509 (ICE in cc1 during selftests)
Richard Biener [Tue, 25 Apr 2017 10:07:58 +0000 (10:07 +0000)]
re PR bootstrap/80509 (ICE in cc1 during selftests)

2017-04-25  Richard Biener  <rguenther@suse.de>

PR middle-end/80509
* passes.c (pass_manager::pass_manager): Initialize
m_name_to_pass_map.

From-SVN: r247171

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 10:03:40 +0000 (12:03 +0200)]
[multiple changes]

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

* checks.adb (Insert_Valid_Check): Partially reimplement validity
checks.
* einfo.adb Node36 is now used as Validated_Object.
(Validated_Object): New routine.
(Set_Validated_Object): New routine.
(Write_Field36_Name): Add an entry for Validated_Object.
* einfo.ads Add new attribute Validated_Object along with
usage in entities.
(Validated_Object): New routine along with pragma Inline.
(Set_Validated_Object): New routine along with pragma Inline.
* exp_attr.adb (Make_Range_Test): Add processing for validation
variables to avoid extra reads and copies of the prefix.
* exp_ch6.adb (Expand_Actuals): Add copy-back for validation
variables in order to reflect any changes done in the variable
back into the original object.
* sem_util.adb (Is_Validation_Variable_Reference): New routine.
* sem_util.ads (Is_Validation_Variable_Reference): New routine.

2017-04-25  Steve Baird  <baird@adacore.com>

* exp_ch7.adb (Build_Array_Deep_Procs,
Build_Record_Deep_Procs, Make_Finalize_Address_Body): Don't
generate Finalize_Address routines for CodePeer.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* sem_prag.adb (Inherits_Class_Wide_Pre): subsidiary of
Analyze_Pre_Post_Condition, to implement the legality checks
mandated by AI12-0131: Pre'Class shall not be specified for an
overriding primitive subprogram of a tagged type T unless the
Pre'Class aspect is specified for the corresponding primitive
subprogram of some ancestor of T.

From-SVN: r247170

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 09:47:33 +0000 (11:47 +0200)]
[multiple changes]

2017-04-25  Bob Duff  <duff@adacore.com>

* sem_ch8.adb (Use_One_Type): If a use_type_clause
is redundant, set its Used_Operations to empty. This is only
necessary for use clauses that appear in the parent of a generic
child unit, because those use clauses get reanalyzed when we
instantiate the generic, and we don't want the Used_Operations
carried over from the original context (where it was probably
not redundant).

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_ch6.adb: Minor reformatting.

From-SVN: r247169

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 09:46:05 +0000 (11:46 +0200)]
[multiple changes]

2017-04-25  Bob Duff  <duff@adacore.com>

* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
Use Source_Index (Current_Sem_Unit) to find the correct casing.
* exp_prag.adb (Expand_Pragma_Check): Use Source_Index
(Current_Sem_Unit) to find the correct casing.
* par.adb (Par): Null out Current_Source_File, to ensure that
the above bugs won't rear their ugly heads again.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* sem_ch8.adb (Find_Type): For an attribute reference
'Class, if prefix type is synchronized and previous errors
have suppressed the creation of the corresponding record type,
create a spurious class-wide for the synchonized type itself,
to catch other misuses of the attribute

2017-04-25  Steve Baird  <baird@adacore.com>

* exp_ch6.adb (Expand_Simple_Function_Return): if CodePeer_Mode
is True, then don't generate the accessibility check for the
tag of a tagged result.
* exp_intr.adb (Expand_Dispatching_Constructor_Call):
if CodePeer_Mode is True, then don't generate the
tag checks for the result of call to an instance of
Ada.Tags.Generic_Dispatching_Constructor (i.e., both the "is a
descendant of" check and the accessibility check).

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* sem_ch13.adb: Code cleanups.
* a-strbou.ads: minor whitespace fix in Trim for bounded strings.
* sem_ch8.ads: Minor comment fix.

From-SVN: r247168

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 09:42:56 +0000 (11:42 +0200)]
[multiple changes]

2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

* exp_ch4.adb (Library_Level_Target): New function.
(Expand_Concatenate): When optimization is enabled, also expand
the operation out-of-line if the concatenation is present within
the expression of the declaration of a library-level object and
not only if it is the expression of the declaration.

2017-04-25  Bob Duff  <duff@adacore.com>

* freeze.adb (Freeze_Object_Declaration): Do
not Remove_Side_Effects if there is a pragma Linker_Section,
because in that case we want static initialization in the
appropriate section.

2017-04-25  Gary Dismukes  <dismukes@adacore.com>

* exp_dbug.adb: Minor rewording and reformatting.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* sem_attr.adb (Statically_Denotes_Object): New predicate, to
handle the proposed changes to rules concerning potentially
unevaluated expressions, to include selected components that
do not depend on discriminants, and indexed components with
static indices.
* sem_util.adb (Is_Potentially_Unevaluated): Add check for
predicate in quantified expression, and fix bugs in the handling
of case expressions and membership test.
(Analyze_Attribute_Old_Result): use new predicate.
(Analyze_Attribute, case Loop_Entry): ditto.

From-SVN: r247167

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 09:40:48 +0000 (11:40 +0200)]
[multiple changes]

2017-04-25  Bob Duff  <duff@adacore.com>

* s-secsta.adb (SS_Info): Add a comment
explaining why we don't need to walk all the chunks in order to
compute the total size.

2017-04-25  Bob Duff  <duff@adacore.com>

* namet.ads, namet.adb (Global_Name_Buffer): Increase the length
of the global name buffer to 4*Max_Line_Length.

2017-04-25  Javier Miranda  <miranda@adacore.com>

* exp_ch8.adb (Expand_N_Object_Renaming_Declaration): When creating a
renaming entity for debug information, mark the entity as needing debug
info if it comes from sources.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Remove the
restriction converning the use of 'Address where the prefix is
of a controlled type.

2017-04-25  Pierre-Marie de Rodat  <derodat@adacore.com>

* exp_dbug.adb: In Debug_Renaming_Declaration,
skip slices that are made redundant by an indexed component
access.
* atree.h: New definition for Original_Node.

From-SVN: r247166

7 years agosem_prag.adb, [...]: Minor reformatting.
Hristian Kirtchev [Tue, 25 Apr 2017 09:37:51 +0000 (09:37 +0000)]
sem_prag.adb, [...]: Minor reformatting.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_prag.adb, sem_prag.ads: Minor reformatting.

From-SVN: r247165

7 years agoMinor reformatting.
Arnaud Charlet [Tue, 25 Apr 2017 09:37:00 +0000 (11:37 +0200)]
Minor reformatting.

From-SVN: r247164

7 years agosem_ch3.adb (Check_Entry_Contract): Call Preanalyze_Spec_Expression so that resolutio...
Ed Schonberg [Tue, 25 Apr 2017 09:36:51 +0000 (09:36 +0000)]
sem_ch3.adb (Check_Entry_Contract): Call Preanalyze_Spec_Expression so that resolution takes place as well.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* sem_ch3.adb (Check_Entry_Contract): Call
Preanalyze_Spec_Expression so that resolution takes place as well.
* sem_util.adb (Check_Internal_Protected_Use): Reject properly
internal calls that appear in preconditions of protected
operations, in default values for same, and in contract guards
for contract cases in SPARK.

From-SVN: r247163

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 09:35:46 +0000 (11:35 +0200)]
[multiple changes]

2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

* a-numaux.ads: Fix description of a-numaux-darwin
and a-numaux-x86.
(Double): Define to Long_Float.
* a-numaux-vxworks.ads (Double): Likewise.
* a-numaux-darwin.ads
(Double): Likewise.
* a-numaux-libc-x86.ads (Double): Define to Long_Long_Float.
* a-numaux-x86.ads: Fix package description.
* a-numaux-x86.adb (Is_Nan): Minor tweak.
(Reduce): Adjust and complete description. Call Is_Nan instead of
testing manually. Use an integer temporary to hold rounded value.
* a-numaux-darwin.adb (Reduce): Likewise.
(Is_Nan): New function.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* sem_ch4.adb (Analyze_Selected_Component): Additional refinement
on analysis of prefix whose type is a current instance of a
synchronized type, but where the prefix itself is an entity that
is an object.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* exp_ch5.adb (Replace_Target): When rewriting the RHS, preserve
the identity of callable entities therein, because they have been
properly resolved, and prefixed calls may have been rewritten
as normal calls.

2017-04-25  Patrick Bernardi  <bernardi@adacore.com>

* exp_ch3.adb (Build_Init_Statements): Convert
the expression of the pragma/aspect Secondary_Stack_Size to
internal type System.Parameters.Size_Type before assigning
it to the Secondary_Stack_Size component of the task type's
corresponding record.

2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

* sem_eval.adb (Compile_Time_Compare): Reinstate the expr+literal
(etc) optimizations when the type is modular and the offsets
are equal.

2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

* s-osinte-freebsd.ads: Minor comment tweaks

2017-04-25  Javier Miranda  <miranda@adacore.com>

* urealp.adb (UR_Write): Reverse previous patch
adding documentation on why we generate multiplications instead
of divisions (needed to avoid expressions whose computation with
large numbers may cause division by 0).

2017-04-25  Bob Duff  <duff@adacore.com>

* erroutc.adb (Set_Specific_Warning_Off,
Set_Warnings_Mode_Off): Use the correct source file for
Stop. Was using Current_Source_File, which is only valid during
parsing. Current_Source_File will have a leftover value from
whatever file happened to be parsed last, because of a with_clause
or something.

2017-04-25  Bob Duff  <duff@adacore.com>

* lib.ads, lib.adb (In_Internal_Unit): New functions similar
to In_Predefined_Unit, but including GNAT units.
* sem_util.ads, sem_util.adb (Should_Ignore_Pragma): Replace
with Should_Ignore_Pragma_Par and Should_Ignore_Pragma_Sem,
because Should_Ignore_Pragma was not working reliably outside
the parser, because Current_Source_File is not valid.
* sem_prag.adb, exp_prag.adb: Call Should_Ignore_Pragma_Sem.
* par-prag.adb: Call Should_Ignore_Pragma_Par.

From-SVN: r247162

7 years agoCode cleanups.
Arnaud Charlet [Tue, 25 Apr 2017 09:29:17 +0000 (11:29 +0200)]
Code cleanups.

From-SVN: r247161

7 years ago2017-04-25 Arnaud Charlet <charlet@adacore.com trojanek>
Arnaud Charlet [Tue, 25 Apr 2017 09:28:49 +0000 (11:28 +0200)]
2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>

* gnat1drv.adb (Gnat1Drv): Disable Generate_Processed_File in
codepeer mode.

2017-04-25  Javier Miranda  <miranda@adacore.com>

* urealp.adb (UR_Write): Fix output of constants with a base other
that 10.

2017-04-25  Justin Squirek  <squirek@adacore.com>

* sem_ch13.adb (Get_Interfacing_Aspects): Moved to sem_util.adb.
* sem_prag.adb (Analyze_Pragma, Process_Import_Or_Interface):
Add extra parameter for Process_Interface_Name.
(Process_Interface_Name): Add parameter for pragma to analyze
corresponding aspect.
* sem_util.ads, sem_util.adb (Get_Interfacing_Aspects): Added
from sem_ch13.adb

From-SVN: r247160

7 years agore PR tree-optimization/79201 (missed optimization: sinking doesn't handle calls...
Richard Biener [Tue, 25 Apr 2017 09:26:37 +0000 (09:26 +0000)]
re PR tree-optimization/79201 (missed optimization: sinking doesn't handle calls, swap PRE and sinking)

2017-04-25  Richard Biener  <rguenther@suse.de>

PR tree-optimization/79201
* tree-ssa-sink.c (statement_sink_location): Handle calls.

* gcc.dg/tree-ssa/ssa-sink-16.c: New testcase.
* gcc.target/i386/pr22152.c: Disable sinking.

From-SVN: r247159

7 years agoCode clean ups.
Arnaud Charlet [Tue, 25 Apr 2017 09:25:55 +0000 (11:25 +0200)]
Code clean ups.

From-SVN: r247158

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 09:25:40 +0000 (11:25 +0200)]
[multiple changes]

2017-04-25  Gary Dismukes  <dismukes@adacore.com>

* exp_ch7.adb, einfo.ads, sem_prag.adb: Minor reformatting and typo
correction.

2017-04-25  Yannick Moy  <moy@adacore.com>

* sem_res.adb (Resolve_Comparison_Op): Do not
attempt evaluation of relational operations inside assertions.

2017-04-25  Justin Squirek  <squirek@adacore.com>

* exp_util.adb (Add_Interface_Invariants):
Restored, code moved back from Build_Invariant_Procedure_Body.
(Add_Parent_Invariants): Restored, code moved back from
Build_Invariant_Procedure_Body.
(Build_Invariant_Procedure_Body):
Remove refactored calls and integrated code from
Add_Parent_Invariants and Add_Interface_Invariants.

2017-04-25  Johannes Kanig  <kanig@adacore.com>

* errout.adb (Output_Messages): Adjust computation of total
errors
* erroutc.adb (Error_Msg): In statistics counts, deal
correctly with informational messages that are not warnings.
* errutil.adb (Finalize): adjust computation of total errors.

2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>

* terminals.c (__gnat_terminate_pid): New.
* g-exptty.ads (Terminate_Process): New. Update comments.

From-SVN: r247157

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 09:22:43 +0000 (11:22 +0200)]
[multiple changes]

2017-04-25  Arnaud Charlet  <charlet@adacore.com>

* a-cfinve.ads, a-cofove.ads (Empty_Vector): add Global contract.

2017-04-25  Justin Squirek  <squirek@adacore.com>

* sem_ch3.adb (Analyze_Declarations): Minor
correction to comments, move out large conditional and scope
traversal into a predicate.
(Uses_Unseen_Lib_Unit_Priv): Predicate function made from extracted
logic.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* sem_ch4.adb (Analyze_Selected_Component): Refine analysis
of prefix whose type is a current instance of a synchronized
type. If the prefix is an object this is an external call (or
requeue) that can only access public operations of the object. The
previous predicate was too restrictive, and did not allow public
protected operations, only task entries.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_ch5.adb, fname.adb: Minor reformatting.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

* einfo.adb (Is_Anonymous_Access_Type): New routine.
* einfo.ads Update the placement of
E_Anonymous_Access_Subprogram_Type along with all subtypes that
mention the ekind.
(Is_Anonymous_Access_Type): New routine.
* exp_ch7.adb (Allows_Finalization_Master): Do not generate a
master for an access type subject to pragma No_Heap_Finalization.
* exp_util.adb (Build_Allocate_Deallocate_Proc): An object being
allocated or deallocated does not finalization actions if the
associated access type is subject to pragma No_Heap_Finalization.
* opt.ads Add new global variable No_Heap_Finalization_Pragma.
* par-prag.adb Pragma No_Heap_Finalization does not need special
processing from the parser.
* sem_ch6.adb (Check_Return_Subtype_Indication): Remove ancient
??? comments. Use the new predicate Is_Anonymous_Access_Type.
* sem_prag.adb Add an entry in table Sig_Flags for pragma
No_Heap_Finalization.
(Analyze_Pragma): Add processing for
pragma No_Heap_Finalization. Update various error messages to
use Duplication_Error.
* sem_util.ads, sem_util.adb (No_Heap_Finalization): New routine.
* snames.ads-tmpl: Add new predefined name No_Heap_Finalization
and corresponding pragma id.

From-SVN: r247156

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 09:19:34 +0000 (11:19 +0200)]
[multiple changes]

2017-04-25  Bob Duff  <duff@adacore.com>

* freeze.adb (Freeze_Record_Type): Use the
underlying type of the component type to determine whether it's
elementary. For representation clause purposes, a private type
should behave the same as its full type.
* fname.ads, fname.adb (Is_Predefined_File_Name):
Make sure things like "system.ali" are recognized as predefined.

2017-04-25  Javier Miranda  <miranda@adacore.com>

* debug.adb: Update documentation of -gnatd.6.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* sem_ch5.adb (Preanalyze_Range): Handle properly an Ada2012
element iterator when the name is an overloaded function call,
one of whose interpretations yields an array.

From-SVN: r247155

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 09:14:07 +0000 (11:14 +0200)]
[multiple changes]

2017-04-25  Bob Duff  <duff@adacore.com>

* uname.ads, uname.adb (Is_Predefined_Unit_Name,
Is_Internal_Unit_Name): New functions for operating on unit
names, as opposed to file names. There's some duplicated code
with fname.adb, which is unfortunate, but it seems like we don't
want to add dependencies here.
* fname-uf.adb (Get_File_Name): Change Is_Predefined_File_Name
to Is_Predefined_Unit_Name; the former was wrong, because Uname
is not a file name at all.
* fname.ads, fname.adb: Document the fact that
Is_Predefined_File_Name and Is_Internal_File_Name can be called
for ALI files, and fix the code so it works properly for ALI
files. E.g. these should return True for "system.ali".

2017-04-25  Justin Squirek  <squirek@adacore.com>

* exp_util.adb (Add_Invariant): Removed,
code moved to Add_Invariant_Check, Add_Inherited_Invariant,
and Add_Own_Invariant. (Add_Invariant_Check): Used
for adding runtime checks from any kind of invariant.
(Add_Inherited_Invariant): Generates invariant checks for
class-wide invariants (Add_Interface_Invariants): Removed, code
moved to Build_Invariant_Procedure_Body (Add_Own_Invariant):
Create a types own invariant procedure (Add_Parent_Invariants):
Removed, code moved to Build_Invariant_Procedure_Body
(Build_Invariant_Procedure_Body): Add refactored calls
and integrated code from Add_Parent_Invariants and
Add_Interface_Invariants.
(Process_Type): Removed, the
relavant code was inlined into both Add_Own_Invariant and
Add_Inherited_Invariant.

From-SVN: r247154

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 09:12:31 +0000 (11:12 +0200)]
[multiple changes]

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

* make.adb, par-ch2.adb, sem_util.adb, scans.ads, sem_ch8.adb,
scn.adb, osint.adb, fname.adb: Minor reformatting.

2017-04-25  Pascal Obry  <obry@adacore.com>

* s-taprop-mingw.adb: Do not check for CloseHandle in
Finalize_TCB.

From-SVN: r247153

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 09:06:09 +0000 (11:06 +0200)]
[multiple changes]

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_util.adb (Check_Part_Of_Reference):
Continue to examine the context if the reference appears within
an expression function.

2017-04-25  Justin Squirek  <squirek@adacore.com>

* exp_ch7.adb, exp_ch7.ads Remove Build_Invariant_Procedure_Body
and Build_Invariant_Procedure_Declaration.
* exp_util.ads, exp_util.adb Add Build_Invariant_Procedure_Body
and Build_Invariant_Procedure_Declaration from exp_ch7
and break-out Is_Untagged_Private_Derivation from
Build_Invariant_Procedure_Body.
(Replace_Type_References):
Append an extra parameter to allow for dispatching replacements
and add the corrasponding logic.
(Type_Invariant): Remove
Replace_Typ_Refs and replace its references with calls to
Replace_Type_References.
* sem_ch3.adb, sem_prag.adb: Remove with and use of exp_ch7.

From-SVN: r247152

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 09:00:45 +0000 (11:00 +0200)]
[multiple changes]

2017-04-25  Bob Duff  <duff@adacore.com>

* sem_util.ads, sem_util.adb (Should_Ignore_Pragma): New function
that returns True when appropriate.
* par-prag.adb, exp_prag.adb, sem_prag.adb: Do not ignore pragmas
when compiling predefined files.
* fname.ads, fname.adb (Is_Predefined_File_Name): Fix bug:
"gnat.adc" should not be considered a predefined file name.
That required (or at least encouraged) a lot of cleanup of global
variable usage. We shouldn't be communicating information via
the global name buffer.
* bindgen.adb, errout.adb, fname-uf.adb, lib-load.adb, make.adb,
* restrict.adb, sem_ch10.adb, sem_ch6.adb, sem_ch8.adb: Changes
required by the above-mentioned cleanup.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* osint.adb (Find_File): Handle properly a request for a
configuration file whose name is a directory.

From-SVN: r247151

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 08:56:41 +0000 (10:56 +0200)]
[multiple changes]

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_attr.adb, sem_ch5.adb: Minor reformatting.

2017-04-25  Bob Duff  <duff@adacore.com>

* types.ads: Minor: Fix '???' comment.
* sem_ch8.adb: Minor comment fix.

2017-04-25  Bob Duff  <duff@adacore.com>

* sem_prag.adb: Remove suspicious uses of Name_Buf.
* stringt.ads, stringt.adb, exp_dbug.adb, sem_dim.adb: Remove
Add_String_To_Name_Buffer, to avoid using the global Name_Buf.
Add String_To_Name with no side effects.

2017-04-25  Justin Squirek  <squirek@adacore.com>

* sem_ch3.adb (Analyze_Declarations): Add
additional condition for edge case.

2017-04-25  Bob Duff  <duff@adacore.com>

* par-ch2.adb, scans.ads, scn.adb: Do not give an error for
reserved words inside pragmas. This is necessary to allow the
pragma name Interface to be used in pragma Ignore_Pragma.
* par.adb: Minor comment fix.

2017-04-25  Javier Miranda  <miranda@adacore.com>

* a-tags.ads, a-tags.adb (Type_Is_Abstract): Renamed as Is_Abstract.
* rtsfind.ads (RE_Type_Is_Abstract): Renamed as Is_Abstract.
* exp_disp.adb (Make_DT): Update occurrences of RE_Type_Is_Abstract.
* exp_intr.adb (Expand_Dispatching_Constructor_Call): Update
occurrences of RE_Type_Is_Abstract

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_util.adb (Build_Chain): Account for ancestor
subtypes while traversing the derivation chain.

From-SVN: r247150

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 08:52:22 +0000 (10:52 +0200)]
[multiple changes]

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* sem_attr.adb: minor reformatting.

2017-04-25  Doug Rupp  <rupp@adacore.com>

* sigtramp-vxworks-target.inc [PPC64]: Add a .localentry pseudo-op.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* sem_ch5.adb (Analyze_Assignment): Reset Full_Analysis flag on
the first pass over an assignment statement with target names,
to prevent the generation of subtypes (such as discriminated
record components)that may carry the target name outside of the
tree for the assignment. The subtypes will be generated when
the assignment is reanalyzed in full.
(Analyze_Target_Name): Handle properly class-wide types.

From-SVN: r247149

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 08:37:09 +0000 (10:37 +0200)]
[multiple changes]

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

* elists.ads, elists.adb (Prepend_Unique_Elmt): New routine.
* exp_ch3.adb (Freeze_Type): Signal the DIC body is created for
the purposes of freezing.
* exp_util.adb Update the documentation and structure of the
type map used in class-wide semantics of assertion expressions.
(Add_Inherited_Tagged_DIC): There is really no need to preanalyze
and resolve the triaged expression because all substitutions
refer to the proper entities.  Update the replacement of
references.
(Build_DIC_Procedure_Body): Add formal parameter
For_Freeze. Add local variable Build_Body. Inherited DIC pragmas
are now only processed when freezing occurs.  Build a body only
when one is needed.
(Entity_Hash): Removed.
(Map_Types): New routine.
(Replace_Object_And_Primitive_References): Removed.
(Replace_References): New routine.
(Replace_Type_References): Moved to the library level of Exp_Util.
(Type_Map_Hash): New routine.
(Update_Primitives_Mapping): Update the mapping call.
(Update_Primitives_Mapping_Of_Types): Removed.
* exp_util.ads (Build_DIC_Procedure_Body): Add formal
parameter For_Freeze and update the comment on usage.
(Map_Types): New routine.
(Replace_References): New routine.
(Replace_Type_References): Moved to the library level of Exp_Util.
(Update_Primitives_Mapping_Of_Types): Removed.
* sem_ch7.adb (Preserve_Full_Attributes): Propagate the DIC
properties of the private type to the full view in case the full
view derives from a parent type and inherits a DIC pragma.
* sem_prag.adb (Analyze_Pragma): Guard against a case where a
DIC pragma is placed at the top of a declarative region.

2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>

* a-tasatt.adb: Complete previous change and use an unsigned
int to avoid overflow checks.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* sem_attr.adb (Analyze_Attribute, case 'Access): Specialize
the error message when the attribute reference is an actual in
a call to a subprogram inherited from a generic formal type with
unknown discriminants, which makes the subprogram and its formal
parameters intrinsic (see RM 6.3.1 (8) and (13)).

From-SVN: r247148

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 08:33:18 +0000 (10:33 +0200)]
[multiple changes]

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_aggr.adb, inline.adb, einfo.adb, einfo.ads, scng.adb,
sem_prag.adb: Minor reformatting.

2017-04-25  Bob Duff  <duff@adacore.com>

* sem_attr.adb (Type_Key): Add code in the
recursive Compute_Type_Key to protect against fetching the source
code for Standard, in case a component of the type is declared
in Standard. There was already code to do this for the original
type, but not for its components.

From-SVN: r247147

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 08:29:46 +0000 (10:29 +0200)]
[multiple changes]

2017-04-25  Javier Miranda  <miranda@adacore.com>

* exp_ch3.adb (Build_Initialization_Call): Handle
subtypes of private types when searching for the underlying full
view of a private type.

2017-04-25  Javier Miranda  <miranda@adacore.com>

* sem_res.adb (Set_Mixed_Mode_Operand): A universal
real conditional expression can appear in a fixed-type context
and must be resolved with that context to facilitate the code
generation to the backend.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* einfo.adb, einfo.ads (Body_Needed_For_Inlining): New flag,
to indicate whether during inline processing, when some unit U1
appears in the context of a unit U2 compiled for instantiation
or inlining purposes, the body of U1 needs to be compiled as well.
* sem_prag.adb (Process_Inline): Set Body_Needed_For_Inlining if
context is a package declaration.
* sem_ch12.adb (Analyze_Generic_Subprogram_Declaration,
Analyze_Generic_Package_Declaration): ditto.
* inline.adb (Analyze_Inlined_Bodies): Check
Body_Needed_For_Inlining.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* par.adb (Current_Assign_Node): Global variable use to record
the presence of a target_name in the right hand side of the
assignment being parsed.
* par-ch4.adb (P_Name): If the name is a target_name, mark the
enclosing assignment node accordingly.
* par-ch5.adb (P_Assignment_Statement): Set Current_Assign_Node
appropriately.
* sem_ch5.adb (Analyze_Assignment): Disable expansion before
analyzing RHS if the statement has target_names.
* sem_aggr.adb (Resolve_Iterated_Component_Association): Handle
properly choices that are subtype marks.
* exp_ch5.adb: Code cleanup.

2017-04-25  Bob Duff  <duff@adacore.com>

* s-memory.adb: Add a comment regarding efficiency.
* atree.adb: Fix the assertion, and combine 2 assertions into one,
"the source has an extension if and only if the destination does."
* sem_ch3.adb, sem_ch13.adb: Address ??? comments.

2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>

* a-tasatt.adb (Set_Value): Fix handling of 32bits -> 64bits
conversion.

2017-04-25  Doug Rupp  <rupp@adacore.com>

* init.c (__gnat_error_handler) [vxworks]: Turn on sigtramp
handling for ppc64-vx7.
* sigtramp-vxworks-target.inc
[SIGTRAMP_BODY]: Add section for ppc64-vx7.

From-SVN: r247146

7 years agoNew file.
Arnaud Charlet [Tue, 25 Apr 2017 08:25:29 +0000 (08:25 +0000)]
New file.

From-SVN: r247145

7 years agouintp.adb (Most_Sig_2_Digits): In case Direct (Right)...
Bob Duff [Tue, 25 Apr 2017 08:23:06 +0000 (08:23 +0000)]
uintp.adb (Most_Sig_2_Digits): In case Direct (Right)...

2017-04-25  Bob Duff  <duff@adacore.com>

* uintp.adb (Most_Sig_2_Digits): In case Direct (Right), fetch
Direct_Val (Right), instead of the incorrect Direct_Val (Left).
(UI_GCD): Remove ??? comment involving possible efficiency
improvements. This just isn't important after all these years.
Also minor cleanup.
* uintp.ads: Minor cleanup.

From-SVN: r247144

7 years agoexp_util.adb, [...]: Revert previous changes.
Hristian Kirtchev [Tue, 25 Apr 2017 08:21:44 +0000 (08:21 +0000)]
exp_util.adb, [...]: Revert previous changes.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_util.adb, exp_util.ads, sem_ch7.adb, sem_prag.adb, exp_ch3.adb:
Revert previous changes.
* scng.adb: Minor reformatting.
* s-stratt.ads: Fix unbalanced parens in comment.

From-SVN: r247143

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 08:19:33 +0000 (10:19 +0200)]
[multiple changes]

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_ch3.adb, exp_util.adb, sem_prag.adb, freeze.adb, sem_util.adb:
Minor reformatting.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* scng.adb (Scan): Handle '@' appropriately.
* sem_ch5.adb: Code cleanup.

From-SVN: r247142

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 08:12:31 +0000 (10:12 +0200)]
[multiple changes]

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* freeze.adb (Check_Expression_Function): Do not check for the
use of deferred constants if the freezing of the expression
function is triggered by its generated body, rather than a
premature use.

2017-04-25  Javier Miranda  <miranda@adacore.com>

* exp_attr.adb (Rewrite_Stream_Proc_Call): Handle
subtypes of private types when performing the view conversion.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_ch3.adb (Freeze_Type): Signal the DIC body is created for
the purposes of freezing.
* exp_util.adb Update the documentation and structure of the
type map used in class-wide semantics of assertion expressions.
(Add_Inherited_Tagged_DIC): There is really no need to preanalyze
and resolve the triaged expression because all substitutions
refer to the proper entities.  Update the replacement of
references.
(Build_DIC_Procedure_Body): Add formal parameter
For_Freeze. Add local variable Build_Body. Inherited DIC pragmas
are now only processed when freezing occurs.  Build a body only
when one is needed.
(Entity_Hash): Removed.
(Map_Types): New routine.
(Replace_Object_And_Primitive_References): Removed.
(Replace_References): New routine.
(Replace_Type_References): Moved to the library level of Exp_Util.
(Type_Map_Hash): New routine.
(Update_Primitives_Mapping): Update the mapping call.
(Update_Primitives_Mapping_Of_Types): Removed.
* exp_util.ads (Build_DIC_Procedure_Body): Add formal
parameter For_Freeze and update the comment on usage.
(Map_Types): New routine.
(Replace_References): New routine.
(Replace_Type_References): Moved to the library level of Exp_Util.
(Update_Primitives_Mapping_Of_Types): Removed.
* sem_ch7.adb (Preserve_Full_Attributes): Propagate the DIC
properties of the private type to the full view in case the full
view derives from a parent type and inherits a DIC pragma.
* sem_prag.adb (Analyze_Pragma): Guard against a case where a
DIC pragma is placed at the top of a declarative region.

From-SVN: r247141

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 08:07:38 +0000 (10:07 +0200)]
[multiple changes]

2017-04-25  Tristan Gingold  <gingold@adacore.com>

* s-mmap.ads (Data): Add pragma Inline.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

* checks.adb (Insert_Valid_Check): Do not use
a renaming to alias a volatile name because this will lead to
multiple evaluations of the volatile name. Use a constant to
capture the value instead.

2017-04-25  Doug Rupp  <rupp@adacore.com>

* init.c [VxWorks Section]: Disable sigtramp for ppc64-vx7.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* exp_util.adb, exp_util.ads (Build_Class_Wide_Expression):
Add out parameter to indicate to caller that a wrapper must
be constructed for an inherited primitive whose inherited
pre/postcondition has called to overridden primitives.
* freeze.adb (Check_Inherited_Conditions): Build wrapper body
for inherited primitive that requires it.
* sem_disp.adb (Check_Dispatching_Operation): Such wrappers are
legal primitive operations and belong to the list of bodies
generated after the freeze point of a type.
* sem_prag.adb (Build_Pragma_Check_Equivalent): Use new signature
of Build_Class_Wide_Expression.
* sem_util.adb, sem_util.ads (Build_Overriding_Spec): New procedure
to construct the specification of the wrapper subprogram created
for an inherited operation.

From-SVN: r247140

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 08:04:26 +0000 (10:04 +0200)]
[multiple changes]

2017-04-25  Bob Duff  <duff@adacore.com>

* s-osinte-linux.ads (pthread_mutexattr_setprotocol,
pthread_mutexattr_setprioceiling): Add new interfaces for these
pthread operations.
* s-taprop-linux.adb (Initialize_Lock, Initialize_TCB): Set
protocols as appropriate for Locking_Policy 'C' and 'I'.
* s-taprop-posix.adb: Minor reformatting to make it more similar
to s-taprop-linux.adb.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

* sem_ch3.adb (Get_Discriminant_Value, Search_Derivation_Levels):
Handle properly a multi- level derivation involving both renamed
and constrained parent discriminants, when the type to be
constrained has fewer discriminants that the ultimate ancestor.

2017-04-25  Bob Duff  <duff@adacore.com>

* sem_util.adb (Is_Object_Reference): In the
case of N_Explicit_Dereference, return False if it came from a
conditional expression.

2017-04-25  Bob Duff  <duff@adacore.com>

* par-ch4.adb (P_Case_Expression): If a semicolon
is followed by "when", assume that ";" was meant to be ",".

From-SVN: r247139

7 years agoMinor reformatting.
Arnaud Charlet [Tue, 25 Apr 2017 07:58:18 +0000 (09:58 +0200)]
Minor reformatting.

From-SVN: r247138

7 years agosem_ch9.adb, [...]: Minor reformatting and typo fixes.
Gary Dismukes [Tue, 25 Apr 2017 07:58:01 +0000 (07:58 +0000)]
sem_ch9.adb, [...]: Minor reformatting and typo fixes.

2017-04-25  Gary Dismukes  <dismukes@adacore.com>

* sem_ch9.adb, sem_ch10.adb, sem_util.adb: Minor reformatting and typo
fixes.

From-SVN: r247137

7 years ago[multiple changes]
Arnaud Charlet [Tue, 25 Apr 2017 07:56:05 +0000 (09:56 +0200)]
[multiple changes]

2017-04-25  Arnaud Charlet  <charlet@adacore.com>

* rtsfind.ads (SPARK_Implicit_Load): New procedure for forced
loading of an entity.
* rtsfind.adb (SPARK_Implicit_Load): Body with a pattern
previously repeated in the analysis.
* sem_ch9.adb (Analyze_Protected_Type_Declaration): use new
procedure SPARK_Implicit_Load. (Analyze_Task_Type_Declaration):
use new procedure SPARK_Implicit_Load.
* sem_ch10.adb (Analyze_Compilation_Unit): Use new procedure
SPARK_Implicit_Load.

2017-04-25  Javier Miranda  <miranda@adacore.com>

* sem_util.adb (New_Copy_Tree): By default
copying of defining identifiers is prohibited because
this would introduce an entirely new entity into the
tree. This patch introduces an exception to this general
rule: the declaration of constants and variables located in
Expression_With_Action nodes.
(Copy_Itype_With_Replacement): Renamed as Copy_Entity_With_Replacement.
(In_Map): New subprogram.
(Visit_Entity): New subprogram.
(Visit_Node): Handle EWA_Level,
EWA_Inner_Scope_Level, and take care of defining entities defined
in Expression_With_Action nodes.

2017-04-25  Thomas Quinot  <quinot@adacore.com>

* exp_ch6.adb: minor comment edit.
* sinfo.ads, sinfo.adb: New Null_Statement attribute for null
procedure specifications that come from source.
* par-ch6.adb (P_Subprogram, case of a null procedure): Set new
Null_Statement attribute.
* par_sco.adb (Traverse_Declarations_Or_Statements): For a null
procedure, generate statement SCO for the generated NULL statement.
* sem_ch6.adb (Analyze_Null_Procedure): Use null statement from
parser, if available.

From-SVN: r247136

7 years agoAdd missing changelog entries for last commit.
Andreas Krebbel [Tue, 25 Apr 2017 07:45:41 +0000 (07:45 +0000)]
Add missing changelog entries for last commit.

From-SVN: r247135

7 years agoS/390: PR80464: Split MEM->GPR vector moves
Andreas Krebbel [Tue, 25 Apr 2017 07:43:49 +0000 (07:43 +0000)]
S/390: PR80464: Split MEM->GPR vector moves

We do this already for TImode values but it was missing for vector
modes.

gcc/ChangeLog:

2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

PR target/80464
* config/s390/vector.md: Split MEM->GPR vector moves for
non-s_operand addresses.

gcc/testsuite/ChangeLog:

2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

PR target/80464
* gfortran.fortran-torture/compile/pr80464.f90: New test.

From-SVN: r247134

7 years agoS/390: PR79895: Fix TImode constant handling
Andreas Krebbel [Tue, 25 Apr 2017 07:41:41 +0000 (07:41 +0000)]
S/390: PR79895: Fix TImode constant handling

The P constraint letter is supposed to match every constant which is
acceptable during reload.  However, constraints do not appear to be
able to handle const_wide_int yet.  It works with predicates so the
alternative is modelled with a new predicate now.

gcc/ChangeLog:

2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

PR target/79895
* config/s390/predicates.md (reload_const_wide_int_operand): New
predicate.
* config/s390/s390.md ("movti"): Remove d/P alternative.
("movti_bigconst"): New pattern definition.

gcc/testsuite/ChangeLog:

2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

PR target/79895
* gcc.target/s390/pr79895.c: New test.

From-SVN: r247133

7 years agoS/390: PR80080: Optimize atomic patterns.
Dominik Vogt [Tue, 25 Apr 2017 07:37:50 +0000 (07:37 +0000)]
S/390: PR80080: Optimize atomic patterns.

The attached patch optimizes the atomic_exchange and atomic_compare
patterns on s390 and s390x (mostly limited to SImode and DImode).
Among general optimizaation, the changes fix most of the problems
reported in PR 80080:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80080

gcc/ChangeLog:

2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>

PR target/80080
* s390-protos.h (s390_expand_cs_hqi): Removed.
(s390_expand_cs, s390_expand_atomic_exchange_tdsi): New prototypes.
* config/s390/s390.c (s390_emit_compare_and_swap): Handle all integer
modes as well as CCZ1mode and CCZmode.
(s390_expand_atomic_exchange_tdsi, s390_expand_atomic): Adapt to new
signature of s390_emit_compare_and_swap.
(s390_expand_cs_hqi): Likewise, make static.
(s390_expand_cs_tdsi): Generate an explicit compare before trying
compare-and-swap, in some cases.
(s390_expand_cs): Wrapper function.
(s390_expand_atomic_exchange_tdsi): New backend specific expander for
atomic_exchange.
(s390_match_ccmode_set): Allow CCZmode <-> CCZ1 mode.
* config/s390/s390.md ("atomic_compare_and_swap<mode>"): Merge the
patterns for small and large integers.  Forbid symref memory operands.
Move expander to s390.c.  Require cc register.
("atomic_compare_and_swap<DGPR:mode><CCZZ1:mode>_internal")
("*atomic_compare_and_swap<TDI:mode><CCZZ1:mode>_1")
("*atomic_compare_and_swapdi<CCZZ1:mode>_2")
("*atomic_compare_and_swapsi<CCZZ1:mode>_3"): Use s_operand to forbid
symref memory operands.  Remove CC mode and call s390_match_ccmode
instead.
("atomic_exchange<mode>"): Allow and implement all integer modes.

gcc/testsuite/ChangeLog:

2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>

PR target/80080
* gcc.target/s390/md/atomic_compare_exchange-1.c: New test.
* gcc.target/s390/md/atomic_compare_exchange-1.inc: New test.
* gcc.target/s390/md/atomic_exchange-1.inc: New test.

From-SVN: r247132

7 years agoS/390: Load and test peephole.
Dominik Vogt [Tue, 25 Apr 2017 07:33:05 +0000 (07:33 +0000)]
S/390: Load and test peephole.

gcc/ChangeLog:

2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>

* config/s390/s390.md (define_peephole2): New peephole to help
combining the load-and-test pattern with volatile memory.

From-SVN: r247131

7 years agoS/390: Use load-on-condition in cstorecc4
Dominik Vogt [Tue, 25 Apr 2017 07:31:22 +0000 (07:31 +0000)]
S/390: Use load-on-condition in cstorecc4

gcc/ChangeLog:

2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>

* config/s390/s390.md ("cstorecc4"): Use load-on-condition and deal
with CCZmode for TARGET_Z196.

From-SVN: r247130

7 years agore PR rtl-optimization/80501 (Wrong code w/ a signed char, a shift, and a conversion...
Jakub Jelinek [Tue, 25 Apr 2017 07:28:43 +0000 (09:28 +0200)]
re PR rtl-optimization/80501 (Wrong code w/ a signed char, a shift, and a conversion to int)

PR rtl-optimization/80501
* combine.c (make_compound_operation_int): Set subreg_code to SET
even for AND with mask of the sign bit of mode.

* gcc.c-torture/execute/pr80501.c: New test.

From-SVN: r247128

7 years agore PR rtl-optimization/80500 (ICE: internal consistency failure (error: invalid rtl...
Jakub Jelinek [Tue, 25 Apr 2017 07:27:01 +0000 (09:27 +0200)]
re PR rtl-optimization/80500 (ICE: internal consistency failure (error: invalid rtl sharing found in the insn))

PR rtl-optimization/80500
* loop-unroll.c (combine_var_copies_in_loop_exit): Call copy_rtx on
sum's initial value.

* gcc.dg/pr80500.c: New test.

From-SVN: r247126

7 years agothunderx2t99.md (thunderx2t99_crc): New Reservation.
Julian Brown [Tue, 25 Apr 2017 06:58:14 +0000 (06:58 +0000)]
thunderx2t99.md (thunderx2t99_crc): New Reservation.

* config/aarch64/thunderx2t99.md (thunderx2t99_crc): New Reservation.

Co-Authored-By: Naveen H.S <Naveen.Hurugalawadi@cavium.com>
From-SVN: r247125

7 years agothunderx2t99.md (thunderx2t99_aes): New Reservation.
Julian Brown [Tue, 25 Apr 2017 06:55:50 +0000 (06:55 +0000)]
thunderx2t99.md (thunderx2t99_aes): New Reservation.

* config/aarch64/thunderx2t99.md (thunderx2t99_aes): New Reservation.
(thunderx2t99_sha): New Reservation.

Co-Authored-By: Naveen H.S <Naveen.Hurugalawadi@cavium.com>
From-SVN: r247124

7 years agoLet tree_single_nonzero_warnv_p use range information
Marc Glisse [Tue, 25 Apr 2017 06:51:44 +0000 (08:51 +0200)]
Let tree_single_nonzero_warnv_p use range information

2017-04-25  Marc Glisse  <marc.glisse@inria.fr>

gcc/
* fold-const.c (tree_single_nonzero_warnv_p): Handle SSA_NAME.

gcc/testsuite/
* gcc.dg/tree-ssa/cmpmul-1.c: New file.
* gcc.dg/Wstrict-overflow-18.c: Xfail.

From-SVN: r247123

7 years agoaarch64-simd.md (aarch64_simd_vec_set<mode>): Fix type for 1-element load.
Julian Brown [Tue, 25 Apr 2017 06:45:49 +0000 (06:45 +0000)]
aarch64-simd.md (aarch64_simd_vec_set<mode>): Fix type for 1-element load.

* config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Fix
type for 1-element load.

Co-Authored-By: Naveen H.S <Naveen.Hurugalawadi@cavium.com>
From-SVN: r247122

7 years agoDaily bump.
GCC Administrator [Tue, 25 Apr 2017 00:16:22 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r247121

7 years agore PR fortran/80121 (Memory leak with derived-type intent(out) argument)
Janus Weil [Mon, 24 Apr 2017 20:44:14 +0000 (22:44 +0200)]
re PR fortran/80121 (Memory leak with derived-type intent(out) argument)

2017-04-22  Janus Weil  <janus@gcc.gnu.org>

PR fortran/80121
* gfortran.dg/intent_out_9.f90: Remove deprecated cleanup-tree-dump
directive.

From-SVN: r247115

7 years agoRegenerate .pot files.
Joseph Myers [Mon, 24 Apr 2017 20:37:39 +0000 (21:37 +0100)]
Regenerate .pot files.

gcc/po:
* gcc.pot: Regenerate.

libcpp/po:
* cpplib.pot: Regenerate.

From-SVN: r247113

7 years agotypes.rst (gccjit::type::get_const): Remove comment.
David Malcolm [Mon, 24 Apr 2017 20:33:04 +0000 (20:33 +0000)]
types.rst (gccjit::type::get_const): Remove comment.

gcc_jit_type_get_aligned

gcc/jit/ChangeLog:
* docs/cp/topics/types.rst (gccjit::type::get_const): Remove
comment.
(gccjit::type::get_aligned): Add.
* docs/topics/compatibility.rst: Add LIBGCCJIT_ABI_7.
* docs/topics/types.rst: Add gcc_jit_type_get_aligned.
* docs/_build/texinfo/libgccjit.texi: Regenerate.
* jit-playback.c (gcc::jit::playback::type::get_aligned): New
method.
* jit-playback.h (gcc::jit::playback::type::get_aligned): New
method.
* jit-recording.c: Within namespace gcc::jit::recording...
(type::get_aligned): New method.
(memento_of_get_aligned::replay_into): New method.
(memento_of_get_aligned::make_debug_string): New method.
(memento_of_get_aligned::write_reproducer): New method.
* jit-recording.h: Within namespace gcc::jit::recording...
(type::get_aligned): New method.
(type::accepts_writes_from): Strip off qualifications from
this when comparing pointer equality.
(decorated_type): New subclass of type, subsuming the
commonality between memento_of_get_const and
memento_of_get_volatile.
(memento_of_get_const): Make a subclass of decorated_type,
rather than type.
(memento_of_get_volatile): Likewise.
(memento_of_get_aligned): Likewise.
* libgccjit++.h: Within namespace gccjit...
(type::get_const): New method.
(type::get_aligned): New method.
* libgccjit.c (gcc_jit_type_get_aligned): New function.
* libgccjit.h (gcc_jit_type_get_aligned): New decl.
* libgccjit.map (LIBGCCJIT_ABI_7): New
(gcc_jit_type_get_aligned): Add.

gcc/testsuite/ChangeLog:
* jit.dg/all-non-failing-tests.h: Add test-alignment.c.
* jit.dg/test-alignment.c: New test case.
* jit.dg/test-alignment.cc: New test case.
* jit.dg/test-error-gcc_jit_type_get_aligned-non-power-of-two.c:
New test case.

From-SVN: r247111

7 years agodecl.c (grokdeclarator): Use %qT instead of %<%T%> in
Volker Reichelt [Mon, 24 Apr 2017 20:30:29 +0000 (20:30 +0000)]
decl.c (grokdeclarator): Use %qT instead of %<%T%> in

        * decl.c (grokdeclarator): Use %qT instead of %<%T%> in
        * diagnostics.
        (start_enum): Likewise.
        (build_enumerator): Likewise. Use %qE instead of plain %E.
        * parser.c (cp_parser_mem_initializer_list): Use %qD instead of
        %<%D%> in diagnostics.
        (cp_parser_elaborated_type_specifier): Likewise.
        * pt.c (make_pack_expansion): Use %qT and %qE instead of
        %<%T%> and %<%E%> in diagnostics.
        (tsubst_pack_expansion): Likewise.

From-SVN: r247110

7 years agoFix location of sizeof/alignof (PR c++/80016)
David Malcolm [Mon, 24 Apr 2017 19:12:52 +0000 (19:12 +0000)]
Fix location of sizeof/alignof (PR c++/80016)

PR c++/80016 reports an issue with bizarre underlined range
for a complicated expression.

The root cause for the incorrect *starting* location of that range
is that alignof and sizeof expressions currently have
start == finish == caret at the opening parenthesis of the
expression.

This patch fixes this by generating appropriate start and finish
locations for alignof and sizeof expressions.

gcc/cp/ChangeLog:
PR c++/80016
* parser.c (cp_parser_unary_expression):  Generate a location
range for alignof and sizeof expressions.

gcc/testsuite/ChangeLog:
PR c++/80016
* g++.dg/plugin/diagnostic-test-expressions-1.C (test_sizeof): New
test function.
(test_alignof): New test function.

From-SVN: r247108

7 years agoX /[ex] 4 < Y /[ex] 4
Marc Glisse [Mon, 24 Apr 2017 19:04:25 +0000 (21:04 +0200)]
X /[ex] 4 < Y /[ex] 4

2017-04-24  Marc Glisse  <marc.glisse@inria.fr>

gcc/
* match.pd (X/[ex]C CMP Y/[ex]C): New transformation.

gcc/testsuite/
* gcc.dg/tree-ssa/cmpexactdiv-2.c: New file.

From-SVN: r247107

7 years agoparser.c (cp_parser_cv_qualifier_seq_opt): Add fix-it info to error message.
Volker Reichelt [Mon, 24 Apr 2017 16:43:01 +0000 (16:43 +0000)]
parser.c (cp_parser_cv_qualifier_seq_opt): Add fix-it info to error message.

        * parser.c (cp_parser_cv_qualifier_seq_opt): Add fix-it info to
        error message.
        (cp_parser_virt_specifier_seq_opt): Likewise.
        (set_and_check_decl_spec_loc): Likewise twice.

        * g++.dg/diagnostic/duplicate1.C: New test.
        * g++.dg/cpp0x/duplicate1.C: New test.

From-SVN: r247105

7 years ago[PR 80293] Dont totally-scalarize char arrays
Martin Jambor [Mon, 24 Apr 2017 15:13:39 +0000 (17:13 +0200)]
[PR 80293] Dont totally-scalarize char arrays

2017-04-24  Martin Jambor  <mjambor@suse.cz>

PR tree-optimization/80293
* tree-sra.c (scalarizable_type_p): New parameter const_decl, make
char arrays not totally scalarizable if it is false.
(analyze_all_variable_accesses): Pass correct value in the new
parameter.  Add a statistics counter.

testsuite/
* g++.dg/tree-ssa/pr80293.C: New test.

From-SVN: r247104

7 years agoPR libstdc++/80506 fix constant used in condition
Jonathan Wakely [Mon, 24 Apr 2017 13:43:19 +0000 (14:43 +0100)]
PR libstdc++/80506 fix constant used in condition

PR libstdc++/80506
* include/bits/random.tcc (gamma_distribution::operator()): Fix magic
number used in loop condition.

From-SVN: r247099

7 years agoFix (PR middle-end/79931)
Martin Liska [Mon, 24 Apr 2017 13:16:34 +0000 (13:16 +0000)]
Fix (PR middle-end/79931)

2017-04-24  Jan Hubicka  <hubicka@ucw.cz>

PR middle-end/79931
* ipa-devirt.c (dump_possible_polymorphic_call_targets): Fix ICE.
2017-04-24  Martin Liska  <mliska@suse.cz>

PR middle-end/79931
* g++.dg/ipa/pr79931.C: New test.

From-SVN: r247097

7 years agore PR fortran/80494 (ICE in wide_int_to_tree)
Richard Biener [Mon, 24 Apr 2017 11:57:53 +0000 (11:57 +0000)]
re PR fortran/80494 (ICE in wide_int_to_tree)

2017-04-24  Richard Biener  <rguenther@suse.de>

PR tree-optimization/80494
* tree-scalar-evolution.c (analyze_scalar_evolution_1): Bail
out for complex types.

* gfortran.dg/pr80494.f90: New testcase.

From-SVN: r247095

7 years agoPR libstdc++/80504 qualify calls to avoid ADL
Jonathan Wakely [Mon, 24 Apr 2017 11:40:07 +0000 (12:40 +0100)]
PR libstdc++/80504 qualify calls to avoid ADL

PR libstdc++/80504
* include/bits/refwrap.h (ref, cref): Qualify calls.
* testsuite/20_util/reference_wrapper/80504.cc: New test.

From-SVN: r247094

7 years agoPR libstdc++/80493 fix invalid exception specification
Jonathan Wakely [Mon, 24 Apr 2017 11:40:02 +0000 (12:40 +0100)]
PR libstdc++/80493 fix invalid exception specification

PR libstdc++/80493
* include/experimental/optional (optional::swap): Fix exception
specification.

From-SVN: r247093

7 years agotree-ssa-sccvn.h (run_scc_vn): Adjust prototype.
Richard Biener [Mon, 24 Apr 2017 11:27:44 +0000 (11:27 +0000)]
tree-ssa-sccvn.h (run_scc_vn): Adjust prototype.

2017-04-24  Richard Biener  <rguenther@suse.de>

* tree-ssa-sccvn.h (run_scc_vn): Adjust prototype.
* tree-ssa-sccvn.c (print_scc): Print SCC size.
(extract_and_process_scc_for_name): Never fail but drop SCC to varying.
(DFS): Adjust and never fail.
(sccvn_dom_walker::fail): Remove.
(sccvn_dom_walker::before_dom_children): Adjust.
(run_scc_vn): Likewise and never fail.
* tree-ssa-pre.c (pass_pre::execute): Adjust.
(pass_fre::execute): Likewise.

From-SVN: r247092

7 years agore PR tree-optimization/79725 (Sinking opportunity missed if blocked by dead stmt)
Richard Biener [Mon, 24 Apr 2017 07:48:47 +0000 (07:48 +0000)]
re PR tree-optimization/79725 (Sinking opportunity missed if blocked by dead stmt)

2017-04-24  Richard Biener  <rguenther@suse.de>

PR tree-optimization/79725
* tree-ssa-sink.c (statement_sink_location): Return whether
failure reason was zero uses.  Move that check later.
(sink_code_in_bb): Deal with zero uses by removing the stmt
if possible.

* gcc.dg/tree-ssa/ssa-sink-15.c: New testcase.

From-SVN: r247091

7 years agore PR c++/2972 (-Wuninitialized could warn about uninitialized member variable usage...
Richard Biener [Mon, 24 Apr 2017 07:34:51 +0000 (07:34 +0000)]
re PR c++/2972 (-Wuninitialized could warn about uninitialized member variable usage in constructors)

2017-04-24  Richard Biener  <rguenther@suse.de>

PR c++/2972
* tree-ssa-uninit.c (warn_uninitialized_vars): Handle some
pointer-based references.

* g++.dg/warn/Wuninitialized-10.C: New testcase.

From-SVN: r247090

7 years agore PR bootstrap/79814 (pass-instances.def:36:14: error: ‘*<unknown>.gcc::pass_manager...
Richard Biener [Mon, 24 Apr 2017 07:33:20 +0000 (07:33 +0000)]
re PR bootstrap/79814 (pass-instances.def:36:14: error: ‘*<unknown>.gcc::pass_manager::pass_warn_unused_result_1’ is used uninitialized in this function)

2017-04-24  Richard Biener  <rguenther@suse.de>

PR bootstrap/79814
* pass_manager.h (pass_manager::operator new): Remove.
(pass_manager::operator delete): Likewise.
* passes.c (pass_manager::operator new): Remove.
(pass_manager::operator delete): Likewise.
(pass_manager::pass_manager): Zero individual pass members.

From-SVN: r247089

7 years agoDaily bump.
GCC Administrator [Mon, 24 Apr 2017 00:16:25 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r247088

7 years agore PR fortran/80484 (Three syntax errors involving derived-type I/O)
Jerry DeLisle [Sun, 23 Apr 2017 15:49:16 +0000 (15:49 +0000)]
re PR fortran/80484 (Three syntax errors involving derived-type I/O)

2017-04-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/80484
* io.c (format_lex): Check for '/' and set token to FMT_SLASH.
(check_format): Move FMT_DT checking code to data_desc section.
* module.c (gfc_match_use): Include the case of INTERFACE_DTIO.

PR fortran/80484
* gfortran.dg/dtio_29.f03: New test.

From-SVN: r247084

7 years agore PR fortran/80121 (Memory leak with derived-type intent(out) argument)
Janus Weil [Sun, 23 Apr 2017 08:26:50 +0000 (10:26 +0200)]
re PR fortran/80121 (Memory leak with derived-type intent(out) argument)

2017-04-22  Janus Weil  <janus@gcc.gnu.org>

PR fortran/80121
* trans-types.c (gfc_conv_procedure_call): Deallocate the components
of allocatable intent(out) arguments.

2017-04-22  Janus Weil  <janus@gcc.gnu.org>

PR fortran/80121
* gfortran.dg/intent_out_9.f90: New test case.

From-SVN: r247083

7 years agore PR target/70799 (STV pass does not convert DImode shifts)
Uros Bizjak [Sun, 23 Apr 2017 07:25:30 +0000 (09:25 +0200)]
re PR target/70799 (STV pass does not convert DImode shifts)

PR target/70799
* config/i386/i386.c (dimode_scalar_to_vector_candidate_p)
<case ASHIFT, case LSHIFTRT>: Also consider variable shifts.
Check "XEXP (src, 1)" operand here.
<case PLUS, case MINUS, case IOR, case XOR, case AND>:
Check "XEXP (src, 1)" operand here.
(dimode_scalar_chain::make_vector_copies): Detect count register
of a shift instruction.  Zero extend count register from QImode
to DImode to satisfy vector shift pattern count operand predicate.
Substitute vector shift count operand with a DImode copy.
(dimode_scalar_chain::convert_reg): Ditto, zero-extend from
vector register.

testsuite/ChangeLog:

PR target/70799
* gcc.target/i186/pr70799-4.c: New test.

From-SVN: r247082

7 years agoDaily bump.
GCC Administrator [Sun, 23 Apr 2017 00:16:28 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r247081

7 years agoDaily bump.
GCC Administrator [Sat, 22 Apr 2017 00:16:26 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r247075

7 years agore PR fortran/80392 ([OOP] ICE with allocatable polymorphic function result in a...
Janus Weil [Fri, 21 Apr 2017 20:47:12 +0000 (22:47 +0200)]
re PR fortran/80392 ([OOP] ICE with allocatable polymorphic function result in a procedure pointer component)

2017-04-21  Janus Weil  <janus@gcc.gnu.org>

PR fortran/80392
* trans-types.c (gfc_get_derived_type): Prevent an infinite loop when
building a derived type that includes a procedure pointer component
with a polymorphic result.

2017-04-21  Janus Weil  <janus@gcc.gnu.org>

PR fortran/80392
* gfortran.dg/proc_ptr_comp_49.f90: New test case.

From-SVN: r247069

7 years agoPR c++/80179 - ICE with initialized flexible array member.
Jason Merrill [Fri, 21 Apr 2017 19:26:54 +0000 (15:26 -0400)]
PR c++/80179 - ICE with initialized flexible array member.

* constexpr.c (verify_ctor_sanity): Handle flexible array members.

From-SVN: r247067

7 years agoi386.md (*extzvqi_mem_rex64): Move above *extzv<mode>.
Uros Bizjak [Fri, 21 Apr 2017 19:17:48 +0000 (21:17 +0200)]
i386.md (*extzvqi_mem_rex64): Move above *extzv<mode>.

* config/i386/i386.md (*extzvqi_mem_rex64): Move above *extzv<mode>.
Remove UNSPEC_NOREX_MEM tag.  Update corresponding peephole2 pattern.
(*insvqi_1_mem_rex64): Move above insv<mode>_1.  Remove
UNSPEC_NOREX_MEM tag.  Update corresponding peephole2 pattern.
(UNSPEC_NOREX_MEM): Remove definition.

From-SVN: r247066

7 years agopr79804.c: Add additional dg-error directive.
Uros Bizjak [Fri, 21 Apr 2017 19:09:27 +0000 (21:09 +0200)]
pr79804.c: Add additional dg-error directive.

* gcc.target/i386/pr79804.c: Add additional dg-error directive.

From-SVN: r247065

7 years agoPR libstdc++/80316 make promise::set_value throw no_state error
Jonathan Wakely [Fri, 21 Apr 2017 14:49:19 +0000 (15:49 +0100)]
PR libstdc++/80316 make promise::set_value throw no_state error

PR libstdc++/80316
* include/std/future (_State_baseV2::_Setter::operator()): Remove
_S_check calls that are done after the pointer to the shared state is
already dereferenced.
(_State_baseV2::_Setter<_Res, void>): Define specialization for void
as partial specialization so it can be defined within the definition
of _State_baseV2.
(_State_baseV2::__setter): Call _S_check.
(_State_baseV2::__setter(promise<void>*)): Add overload for use by
promise<void>::set_value and promise<void>::set_value_at_thread_exit.
(promise<T>, promise<T&>, promise<void>): Make _State a friend.
(_State_baseV2::_Setter<void, void>): Remove explicit specialization.
(promise<void>::set_value, promise<void>::set_value_at_thread_exit):
Use new __setter overload.
* testsuite/30_threads/promise/members/at_thread_exit2.cc: New test.
* testsuite/30_threads/promise/members/set_exception.cc: Test
promise<T&> and promise<void> specializations.
* testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
Test for no_state error condition.
* testsuite/30_threads/promise/members/set_value2.cc: Likewise.

From-SVN: r247064

7 years agoAvoid deprecated warnings about std::auto_ptr in library headers
Jonathan Wakely [Fri, 21 Apr 2017 13:08:51 +0000 (14:08 +0100)]
Avoid deprecated warnings about std::auto_ptr in library headers

* include/backward/auto_ptr.h: Ignore deprecated warnings from use
of auto_ptr.
* include/bits/shared_ptr.h: Likewise.
* include/bits/shared_ptr_base.h: Likewise.
* include/bits/unique_ptr.h: Likewise.
* libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc: Adjust
dg-error lineno.
* libstdc++-v3/testsuite/20_util/default_delete/void_neg.cc: Likewise.
* libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc:
Likewise.
* libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc:
Likewise.

From-SVN: r247063

7 years agore PR tree-optimization/79547 (duplicate strlen calls with same argument not folded)
Richard Biener [Fri, 21 Apr 2017 12:47:02 +0000 (12:47 +0000)]
re PR tree-optimization/79547 (duplicate strlen calls with same argument not folded)

2017-04-21  Richard Biener  <rguenther@suse.de>

PR tree-optimization/79547
* tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
Handle strlen, strcmp, strncmp, strcasecmp, strncasecmp, memcmp,
bcmp, strspn, strcspn, __builtin_object_size and __builtin_constant_p
without any constraints.

* gcc.dg/tree-ssa/strlen-2.c: New testcase.

From-SVN: r247062

7 years agore PR tree-optimization/78847 (pointer arithmetic from c++ ranged-based for loop...
Richard Biener [Fri, 21 Apr 2017 12:09:20 +0000 (12:09 +0000)]
re PR tree-optimization/78847 (pointer arithmetic from c++ ranged-based for loop not optimized)

2017-04-21  Richard Biener  <rguenther@suse.de>

PR tree-optimization/78847
* fold-const.c (split_tree): Handle POINTER_PLUS_EXPR.

* g++.dg/tree-ssa/pr78847.C: New testcase.

From-SVN: r247061

7 years ago* es.po, fr.po: Update.
Joseph Myers [Fri, 21 Apr 2017 10:37:43 +0000 (11:37 +0100)]
* es.po, fr.po: Update.

From-SVN: r247059

7 years agolibiberty: Limit demangler maximum d_print_comp recursion call depth.
Mark Wielaard [Fri, 21 Apr 2017 09:02:03 +0000 (09:02 +0000)]
libiberty: Limit demangler maximum d_print_comp recursion call depth.

The fix for PR demangler/70909 and 67264 (endless demangler recursion)
catches when a demangle_component is printed in a cycle. But that doesn't
protect the call stack blowing up from non-cyclic nested types printed
recursively through d_print_comp. This can happen by a (very) long mangled
string that simply creates a very deep pointer or qualifier chain. Limit
the recursive d_print_comp call depth for a d_print_info to 1K nested
types.

libiberty/ChangeLog:

        * cp-demangle.c (MAX_RECURSION_COUNT): New constant.
        (struct d_print_info): Add recursion field.
        (d_print_init): Initialize recursion.
        (d_print_comp): Check and update d_print_info recursion depth.

From-SVN: r247056

7 years agolibiberty: Always return NULL if d_add_substitution fails.
Mark Wielaard [Fri, 21 Apr 2017 09:01:56 +0000 (09:01 +0000)]
libiberty: Always return NULL if d_add_substitution fails.

d_add_substitution can fail for various reasons, like when the subs array
is full. If d_add_substitution fails d_substitution should return NULL
early and not try to continue. Every other call of d_add_substitution
is handled in the same way.

libiberty/ChangeLog:

* cp-demangle.c (d_substitution): Return NULL if d_add_substitution
fails.

From-SVN: r247055

7 years agolibiberty: Don't update and remove did_subs field from demangler structs.
Mark Wielaard [Fri, 21 Apr 2017 09:01:44 +0000 (09:01 +0000)]
libiberty: Don't update and remove did_subs field from demangler structs.

The d_info field did_subs was used for estimating the string output
size. It was no longer used when the malloc-less callback interface
was introduced in 2007 (svn r121305). But the field was still updated.
When backtracking was introduced in 2013 (svn r205292) did_subs was
also added to the d_info_checkpoint struct. But except for updating
the field it was still not used.

Since it is never used just stop updating the field and remove it
from the two structs.

libiberty/ChangeLog:

* cp-demangle.h (struct d_info): Remove did_subs field.
* cp-demangle.c (struct d_info_checkpoint): Likewise.
(d_template_param): Don't update did_subs.
(d_substitution): Likewise.
(d_checkpoint): Don't assign did_subs.
(d_backtrack): Likewise.
(cplus_demangle_init_info): Don't initialize did_subs.

From-SVN: r247054

7 years agotree.h (build_qualified_type): Annotate with CXX_MEM_STAT_INFO.
Richard Biener [Fri, 21 Apr 2017 08:58:39 +0000 (08:58 +0000)]
tree.h (build_qualified_type): Annotate with CXX_MEM_STAT_INFO.

2017-04-21  Richard Biener  <rguenther@suse.de>

* tree.h (build_qualified_type): Annotate with CXX_MEM_STAT_INFO.
(build_distinct_type_copy): Likewise.
(build_variant_type_copy): Likewise.
* tree.c (build_qualified_type): Pass down mem-stat info.
(build_distinct_type_copy): Likewise.
(build_variant_type_copy): Likewise.

cp/
* cp-tree.h (copy_decl): Annotate with CXX_MEM_STAT_INFO.
(copy_type): Likewise.
* lex.c (copy_decl): Pass down mem-stat info.
(copy_type): Likewise.

From-SVN: r247053

7 years agore PR c/80468 (ICE on invalid AVX512 code with -m32)
Jakub Jelinek [Fri, 21 Apr 2017 08:51:53 +0000 (10:51 +0200)]
re PR c/80468 (ICE on invalid AVX512 code with -m32)

PR c/80468
* c-decl.c (finish_declspecs) <case cts_int_n>: If int_n_idx is not
enabled, set specs->type to integer_type_node.

* gcc.dg/pr80468.c: New test.

From-SVN: r247052

7 years agoAdd test-case (PR tree-optimization/66278).
Martin Liska [Fri, 21 Apr 2017 08:50:19 +0000 (10:50 +0200)]
Add test-case (PR tree-optimization/66278).

2017-04-21  Martin Liska  <mliska@suse.cz>

PR tree-optimization/66278
* gcc.dg/vect/pr66278.c: New test.

From-SVN: r247051

7 years agore PR tree-optimization/80237 (float to double conversion is not optimized away)
Richard Biener [Fri, 21 Apr 2017 08:17:23 +0000 (08:17 +0000)]
re PR tree-optimization/80237 (float to double conversion is not optimized away)

2017-04-21  Richard Biener  <rguenther@suse.de>

PR tree-optimization/80237
* tree-ssa-pre.c (find_leader_in_sets): Add third set argument,
defaulted to NULL.
(phi_translate_1): Also allow a leader in AVAIL_OUT of pred
for a simplified result.

* gcc.dg/tree-ssa/tailcall-9.c: New testcase.
* gcc.dg/tree-ssa/ldist-pr45948.c: Remove undefined behavior,
adjust expected optimizations.

From-SVN: r247049

7 years agotree-ssa-loop-ivcanon.c (constant_after_peeling): Do not require sth as strict as...
Richard Biener [Fri, 21 Apr 2017 08:12:27 +0000 (08:12 +0000)]
tree-ssa-loop-ivcanon.c (constant_after_peeling): Do not require sth as strict as a simple_iv but a chrec without symbols and an...

2016-04-21  Richard Biener  <rguenther@suse.de>

* tree-ssa-loop-ivcanon.c (constant_after_peeling): Do not require
sth as strict as a simple_iv but a chrec without symbols and an
operand defined in the loop we are peeling (and not some subloop).
(propagate_constants_for_unrolling): Propagate all constants.

* gcc.dg/vect/no-scevccp-outer-13.c: Adjust to prevent unrolling
of inner loops.
* gcc.dg/vect/no-scevccp-outer-7.c: Likewise.
* gcc.dg/vect/vect-104.c: Likewise.

From-SVN: r247048

7 years agore PR tree-optimization/80426 (wrong manipulation of range based on INT_MIN)
Eric Botcazou [Fri, 21 Apr 2017 08:03:54 +0000 (08:03 +0000)]
re PR tree-optimization/80426 (wrong manipulation of range based on INT_MIN)

PR tree-optimization/80426
* gcc.c-torture/execute/20170429-1.c: Rename into...
* gcc.c-torture/execute/20170419-1.c: ...this.

From-SVN: r247046

7 years agoDaily bump.
GCC Administrator [Fri, 21 Apr 2017 00:16:27 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r247045

7 years agore PR target/79804 (ICE in print_reg, at config/i386/i386.c:17637)
Uros Bizjak [Thu, 20 Apr 2017 20:25:17 +0000 (22:25 +0200)]
re PR target/79804 (ICE in print_reg, at config/i386/i386.c:17637)

PR target/79804
* config/i386/i386.c (print_reg): Remove assert for disalowed
regno values, call output_operand_lossage instead.

testsuite/ChangeLog:

PR target/79804
* gcc.target/i386/pr79804.c: New test.

From-SVN: r247037

7 years agore PR target/78090 ([x86_64]: GCC allows integer register for inter unit conversion...
Uros Bizjak [Thu, 20 Apr 2017 19:04:36 +0000 (21:04 +0200)]
re PR target/78090 ([x86_64]: GCC allows integer register for inter unit conversion under -mtune-ctrl=^inter_unit_conversions .)

PR target/78090
* config/i386/constraints.md (Yc): New register constraint.
* config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
Use Yc constraint for alternative 2 of operand 0.  Remove
preferred_for_speed attribute.

testsuite/ChangeLog:

PR target/78090
* gcc.target/i386/conversion-2.c: Remove obsolete test.

From-SVN: r247036

7 years ago* g++/opt/pr80436.C: XFAIL on AIX.
David Edelsohn [Thu, 20 Apr 2017 18:26:24 +0000 (18:26 +0000)]
* g++/opt/pr80436.C: XFAIL on AIX.

From-SVN: r247034

7 years agoPR c++/80473 allow suppressing notes about over-aligned new
Jonathan Wakely [Thu, 20 Apr 2017 18:02:05 +0000 (19:02 +0100)]
PR c++/80473 allow suppressing notes about over-aligned new

gcc/cp:

PR c++/80473
* init.c (build_new_1): Suppress notes about over-aligned new when
the warning is suppressed.

gcc/testsuite:

PR c++/80473
* g++.dg/diagnostic/pr80473.C: New test.

From-SVN: r247033