156809 Commits

Author SHA1 Message Date
GCC Administrator
181640f627 Daily bump.
From-SVN: r253775
2017-10-16 00:16:13 +00:00
Paolo Carlini
4dcfe21f16 re PR c++/54090 (internal compiler error: in unify, at cp/pt.c:15731)
2017-10-15  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/54090
	* g++.dg/template/crash128.C: New.

From-SVN: r253772
2017-10-15 22:29:59 +00:00
Jan Hubicka
c53c148c91 i386.c (ix86_vec_cost): New function.
* i386.c (ix86_vec_cost): New function.
	(ix86_rtx_costs): Handle vector operations better.
	* i386.h (struct processor_costs): Add sse_op, fmasd, fmass.
	* x86-tune-costs.h: Add new costs to all tables.

From-SVN: r253771
2017-10-15 22:10:22 +00:00
Jan Hubicka
6065f4446c i386.c (ix86_rtx_costs): Make difference between x87 and SSE operations.
* i386.c (ix86_rtx_costs): Make difference between x87 and SSE
	operations.
	* i386.h (struct processor_costs): Add addss, mulss, mulsd, divss,
	divsd, sqrtss and sqrtsd
	* x86-tune-costs.h: Add new entries to all costs.
	(znver1_cost): Fix to match real instruction latencies.

From-SVN: r253769
2017-10-15 15:58:42 +00:00
Thomas Koenig
31677224bc re PR fortran/82372 (Rejects valid parenthesis)
2017-10-15  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/82372
	* fortran/scanner.c (last_error_char):  New global variable.
	(gfc_scanner_init_1): Set last_error_char to NULL.
	(gfc_gobble_whitespace): If a character not printable or
	not newline, issue an error.

2017-10-15  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/82372
	* gfortran.dg/illegal_char.f90: New test.

From-SVN: r253768
2017-10-15 12:00:29 +00:00
GCC Administrator
5fe8ac6bfb Daily bump.
From-SVN: r253767
2017-10-15 00:16:15 +00:00
Kyrylo Tkachov
d7840b4702 compare-elim.c: Include emit-rtl.h.
2017-10-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
	    Michael Collison <michael.collison@arm.com>

	* compare-elim.c: Include emit-rtl.h.
	(can_merge_compare_into_arith): New function.
	(try_validate_parallel): Likewise.
	(try_merge_compare): Likewise.
	(try_eliminate_compare): Call the above when no previous clobber
	is available.
	(execute_compare_elim_after_reload): Add DF_UD_CHAIN and DF_DU_CHAIN
	dataflow problems.

2017-10-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
	    Michael Collison <michael.collison@arm.com>

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


Co-Authored-By: Michael Collison <michael.collison@arm.com>

From-SVN: r253764
2017-10-14 23:07:24 +00:00
Paolo Carlini
c97b789cb8 re PR c++/80908 ([c++1z] ICE on instantiating a template deducing the noexcept-ness of a function pointer)
2017-10-14  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/80908
	* g++.dg/cpp1z/noexcept-type18.C: New.

From-SVN: r253763
2017-10-14 20:35:36 +00:00
Paolo Carlini
27b8e74a87 re PR c++/81016 (ICE: segfault with template struct specialisation)
2017-10-14  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/81016
	* g++.dg/cpp1z/pr81016.C: New.

From-SVN: r253762
2017-10-14 20:06:08 +00:00
Jakub Jelinek
14745bcac0 re PR middle-end/62263 (Good codegen for bitwise rotate requires code that is technically undefined behavior)
PR middle-end/62263
	PR middle-end/82498
	* tree-ssa-phiopt.c (value_replacement): Comment fix.  Handle
	up to 2 preparation statements for ASSIGN in MIDDLE_BB.

	* c-c++-common/rotate-8.c: Expect no PHIs in optimized dump.

From-SVN: r253761
2017-10-14 20:48:38 +02:00
Jakub Jelinek
cc453086d2 re PR middle-end/62263 (Good codegen for bitwise rotate requires code that is technically undefined behavior)
PR middle-end/62263
	PR middle-end/82498
	* tree-ssa-forwprop.c (simplify_rotate): Allow def_arg1[N]
	to be any operand_equal_p operands.  For & (B - 1) require
	B to be power of 2.  Recognize
	(X << (Y & (B - 1))) | (X >> ((-Y) & (B - 1))) and similar patterns.

	* c-c++-common/rotate-5.c (f2): New function.  Move old
	function to ...
	(f4): ... this.  Use 127 instead of 128.
	(f3, f5, f6): New functions.
	(main): Test all f[1-6] functions, with both 0 and 1 as
	second arguments.
	* c-c++-common/rotate-6.c: New test.
	* c-c++-common/rotate-6a.c: New test.
	* c-c++-common/rotate-7.c: New test.
	* c-c++-common/rotate-7a.c: New test.
	* c-c++-common/rotate-8.c: New test.

From-SVN: r253760
2017-10-14 20:47:14 +02:00
Uros Bizjak
6af90df0e4 re PR bootstrap/82553 (memory_blockage breaks bootstrap on powerpc)
PR bootstrap/82553
	* optabs.c (expand_memory_blockage): Fix call of
	targetm.have_memory_blockage.

From-SVN: r253759
2017-10-14 19:46:49 +02:00
Hristian Kirtchev
0fcd7270b6 sem_elab.adb (In_Preelaborated_Context): A generic package subject to Remote_Call_Interface is not a suitable...
gcc/ada/

2017-10-14  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (In_Preelaborated_Context): A generic package subject to
	Remote_Call_Interface is not a suitable preelaboratd context when the
	call appears in the package body.

gcc/testsuite/

2017-10-14  Hristian Kirtchev  <kirtchev@adacore.com>

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

From-SVN: r253758
2017-10-14 17:17:41 +00:00
Pierre-Marie de Rodat
92b751fdc6 [multiple changes]
2017-10-14  Eric Botcazou  <ebotcazou@adacore.com>

	* layout.ads (Set_Elem_Alignment): Add Align parameter defaulted to 0.
	* layout.adb (Set_Elem_Alignment): Likewise.  Use M name as maximum
	alignment for consistency.  If Align is non-zero, use the minimum of
	Align and M for the alignment.
	* cstand.adb (Build_Float_Type): Use Set_Elem_Alignment instead of
	setting the alignment directly.

2017-10-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Check): Defer evaluation of the
	optional string in an Assert pragma until the expansion of the pragma
	has rewritten it as a conditional statement, so that the string
	argument is only evaluaed if the assertion fails. This is mandated by
	RM 11.4.2.

2017-10-14  Hristian Kirtchev  <kirtchev@adacore.com>

	* debug.adb: Switch -gnatd.v and associated flag are now used to
	enforce the SPARK rules for elaboration in SPARK code.
	* sem_elab.adb: Describe switch -gnatd.v.
	(Process_Call): Verify the SPARK rules only when -gnatd.v is in effect.
	(Process_Instantiation): Verify the SPARK rules only when -gnatd.v is
	in effect.
	(Process_Variable_Assignment): Clarify why variable assignments are
	processed reglardless of whether -gnatd.v is in effect.
	* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update the
	sections on elaboration code and compilation switches.
	* gnat_ugn.texi: Regenerate.

2017-10-14  Gary Dismukes  <dismukes@adacore.com>

	* exp_util.adb, freeze.adb, sem_aggr.adb, sem_util.ads, sem_util.adb,
	sem_warn.adb: Minor reformattings.

From-SVN: r253757
2017-10-14 17:07:35 +00:00
Pierre-Marie de Rodat
2e60feb591 [multiple changes]
2017-10-14  Ed Schonberg  <schonberg@adacore.com>

	* doc/gnat_rm/implementation_defined_aspects.rst: Add documentation
	for reverse iteration over formal containers.
	* gnat_rm.texi: Regenerate.

2017-10-14  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Ensure_Dynamic_Prior_Elaboration): Renamed to
	Ensure_Prior_Elaboration_Dynamic for consistency reasons.
	(Ensure_Static_Prior_Elaboration): Renamed to
	Ensure_Prior_Elaboration_Static for consistency reasons.
	(Info_Variable_Reference): Renamed to Info_Variable_Read in order to
	reflect its new purpose.
	(Is_Initialized): New routine.
	(Is_Suitable_Variable_Reference): Renamed to Is_Suitable_Variable_Read
	in order to reflect its new purpose.
	(Is_Variable_Read): New routine.
	(Output_Variable_Reference): Renamed to Output_Variable_Read in order
	to reflect its new purpose.
	(Process_Variable_Assignment): This routine now acts as a top level
	dispatcher for variable assignments.
	(Process_Variable_Assignment_Ada): New routine.
	(Process_Variable_Assignment_SPARK): New routine.
	(Process_Variable_Reference): Renamed to Process_Variable_Read in order
	to reflects its new purpose. A reference to a variable is now suitable
	for ABE processing only when it is a read. The logic in the routine now
	reflects the latest SPARK elaboration rules.

2017-10-14  Justin Squirek  <squirek@adacore.com>

	* sem_ch8.adb (Analyze_Subprogram_Renaming): Modify condition that
	triggers marking on formal subprograms.

2017-10-14  Javier Miranda  <miranda@adacore.com>

	* checks.adb (Ensure_Valid): Do not skip adding the validity check on
	renamings of objects that come from the sources.

2017-10-14  Eric Botcazou  <ebotcazou@adacore.com>

	* cstand.adb (Build_Float_Type): Move down Siz parameter, add Align
	parameter and set the alignment of the type to Align.
	(Copy_Float_Type): Adjust call to Build_Float_Type.
	(Register_Float_Type): Add pragma Unreferenced for Precision.  Adjust
	call to Build_Float_Type and do not set RM_Size and Alignment.

From-SVN: r253756
2017-10-14 16:47:32 +00:00
Patrick Bernardi
a0b0d71026 Makefile.rtl (GNATRTL_NONTASKING_OBJ): Add s-soliin to GNATRTL_NONTASKING_OBJ.
2017-10-14  Patrick Bernardi  <bernardi@adacore.com>

	* Makefile.rtl (GNATRTL_NONTASKING_OBJ): Add s-soliin to
	GNATRTL_NONTASKING_OBJ.

From-SVN: r253755
2017-10-14 16:33:30 +00:00
Pierre-Marie de Rodat
bad0a3df0b [multiple changes]
2017-10-14  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Is_Build_In_Place_Result_Type): Include code for
	enabling b-i-p for nonlimited controlled types (but disabled).

2017-10-14  Justin Squirek  <squirek@adacore.com>

	* sem_elab.adb (Is_Suitable_Variable_Assignment): Replace call to
	Has_Warnings_Off with Warnings_Off.

2017-10-14  Piotr Trojanek  <trojanek@adacore.com>

	* sinfo.ads (Generic_Parent): Remove wrong (possibly obsolete) comment.

2017-10-14  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): Analyze the contract of an
	enclosing package at the end of the visible declarations.
	* sem_prag.adb (Analyze_Initialization_Item): Suppress the analysis of
	an initialization item which is undefined due to some illegality.

2017-10-14  Patrick Bernardi  <bernardi@adacore.com>

	* ali.adb: Add new ALI line 'T' to read the number of tasks contain
	within each unit that require a default-sized primary and secondary
	stack to be generated by the binder.
	(Scan_ALI): Scan new 'T' lines.
	* ali.ads: Add Primary_Stack_Count and Sec_Stack_Count to Unit_Record.
	* bindgen.adb (Gen_Output_File): Count the number of default-sized
	stacks within the closure that are to be created by the binder.
	(Gen_Adainit, Gen_Output_File_Ada): Generate default-sized secondary
	stacks and record these in System.Secodnary_Stack.
	(Resolve_Binder_Options): Check if System.Secondary_Stack is in the
	closure of the program being bound.
	* bindusg.adb (Display): Add "-Q" switch. Remove rouge "--RTS" comment.
	* exp_ch3.adb (Count_Default_Sized_Task_Stacks): New routine.
	(Expand_N_Object_Declaration): Count the number of default-sized stacks
	used by task objects contained within the object whose declaration is
	being expanded.  Only performed when either the restrictions
	No_Implicit_Heap_Allocations or No_Implicit_Task_Allocations are in
	effect.
	* exp_ch9.adb (Create_Secondary_Stack_For_Task): New routine.
	(Expand_N_Task_Type_Declaration): Create a secondary stack as part of
	the expansion of a task type if the size of the stack is known at
	run-time and the restrictions No_Implicit_Heap_Allocations or
	No_Implicit_Task_Allocations are in effect.
	(Make_Task_Create_Call): If using a restricted profile provide
	secondary stack parameter: either the statically created stack or null.
	* lib-load.adb (Create_Dummy_Package_Unit, Load_Unit,
	Load_Main_Source): Include Primary_Stack_Count and Sec_Stack_Count in
	Unit_Record initialization expressions.
	* lib-writ.adb (Add_Preprocessing_Dependency,
	Ensure_System_Dependency): Include Primary_Stack_Count and
	Sec_Stack_Count in Unit_Record initialization expression.
	(Write_ALI): Write T lines.
	(Write_Unit_Information): Do not output 'T' lines if there are no
	stacks for the binder to generate.
	* lib-writ.ads: Updated library information documentation to include
	new T line entry.
	* lib.adb (Increment_Primary_Stack_Count): New routine.
	(Increment_Sec_Stack_Count): New routine.
	(Primary_Stack_Count): New routine.
	(Sec_Stack_Count): New routine.
	* lib.ads: Add Primary_Stack_Count and Sec_Stack_Count components to
	Unit_Record and updated documentation.
	(Increment_Primary_Stack_Count): New routine along with pragma Inline.
	(Increment_Sec_Stack_Count): New routine along with pragma Inline.
	(Primary_Stack_Count): New routine along with pragma Inline.
	(Sec_Stack_Count): New routine along with pragma Inline.
	* opt.ads: New constant No_Stack_Size.	Flag Default_Stack_Size
	redefined.  New flag Default_Sec_Stack_Size and
	Quantity_Of_Default_Size_Sec_Stacks.
	* rtfinal.c Fixed erroneous comment.
	* rtsfind.ads: Moved RE_Default_Secondary_Stack_Size from
	System.Secondary_Stack to System.Parameters.  Add RE_SS_Stack.
	* sem_util.adb (Number_Of_Elements_In_Array): New routine.
	* sem_util.ads (Number_Of_Elements_In_Array): New routine.
	* switch-b.adb (Scan_Binder_Switches): Scan "-Q" switch.
	* libgnarl/s-solita.adb (Get_Sec_Stack_Addr): Removed routine.
	(Set_Sec_Stack_Addr): Removed routine.
	(Get_Sec_Stack): New routine.
	(Set_Sec_Stack): New routine.
	(Init_Tasking_Soft_Links): Update System.Soft_Links reference to
	reflect new procedure and global names.
	* libgnarl/s-taprop__linux.adb, libgnarl/s-taprop__mingw.adb,
	libgnarl/s-taprop__posix.adb, libgnarl/s-taprop__solaris.adb,
	libgnarl/s-taprop__vxworks.adb (Register_Foreign_Thread): Update
	parameter profile to allow the secondary stack size to be specified.
	* libgnarl/s-tarest.adb (Create_Restricted_Task): Update the parameter
	profile to include Sec_Stack_Address.  Update Tasking.Initialize_ATCB
	call to remove Secondary_Stack_Size reference.  Add secondary stack
	address and size to SSL.Create_TSD call.
	(Task_Wrapper): Remove secondary stack creation.
	* libgnarl/s-tarest.ads (Create_Restricted_Task,
	Create_Restricted_Task_Sequential): Update parameter profile to include
	Sec_Stack_Address and clarify the Size parameter.
	* libgnarl/s-taskin.adb (Initialize_ATCB): Remove Secondary_Stack_Size
	from profile and body.
	(Initialize): Remove Secondary_Stack_Size from Initialize_ATCB call.
	* libgnarl/s-taskin.ads: Removed component Secondary_Stack_Size from
	Common_ATCB.
	(Initialize_ATCB): Update the parameter profile to remove
	Secondary_Stack_Size.
	* libgnarl/s-tassta.adb (Create_Task): Updated parameter profile and
	call to Initialize_ATCB.  Add secondary stack address and size to
	SSL.Create_TSD call, and catch any storage exception from the call.
	(Finalize_Global_Tasks): Update System.Soft_Links references to reflect
	new subprogram and component names.
	(Task_Wrapper): Remove secondary stack creation.
	(Vulnerable_Complete_Master): Update to reflect TSD changes.
	* libgnarl/s-tassta.ads: Reformat comments.
	(Create_Task): Update parameter profile.
	* libgnarl/s-tporft.adb (Register_Foreign_Thread): Update parameter
	profile to include secondary stack size. Remove secondary size
	parameter from Initialize_ATCB call and add it to Create_TSD call.
	* libgnat/s-parame.adb, libgnat/s-parame__rtems.adb,
	libgnat/s-parame__vxworks.adb (Default_Sec_Stack_Size): New routine.
	* libgnat/s-parame.ads, libgnat/s-parame__ae653.ads,
	libgnat/s-parame__hpux.ads, libgnat/s-parame__vxworks.ads: Remove type
	Percentage.  Remove constants Dynamic, Sec_Stack_Percentage and
	Sec_Stack_Dynamic.  Add constant Runtime_Default_Sec_Stack_Size and
	Sec_Stack_Dynamic.
	(Default_Sec_Stack_Size): New routine.
	* libgnat/s-secsta.adb, libgnat/s-secsta.ads: New implementation. Is
	now Preelaborate.
	* libgnat/s-soflin.adb: Removed unused with-clauses.  With
	System.Soft_Links.Initialize to initialize non-tasking TSD.
	(Create_TSD): Update parameter profile. Initialize the TSD and
	unconditionally call SS_Init.
	(Destroy_TSD): Update SST.SS_Free call.
	(Get_Sec_Stack_Addr_NT, Get_Sec_Stack_Addr_Soft, Set_Sec_Stack_Addr_NT,
	Set_Sec_Stack_Addr_Soft): Remove routines.
	(Get_Sec_Stack_NT, Get_Sec_Stack_Soft, Set_Sec_Stack_NT,
	Set_Sec_Stack_Soft): Add routines.
	(NT_TSD): Move to private part of package specification.
	* libgnat/s-soflin.ads: New types Get_Stack_Call and Set_Stack_Call
	with suppressed access checks.  Renamed *_Sec_Stack_Addr_* routines and
	objects to *_Sec_Stack_*.  TSD: removed warning suppression and
	component intialization. Changed Sec_Stack_Addr to Sec_Stack_Ptr.
	(Create_TSD): Update parameter profile.
	(NT_TSD): Move to private section from body.
	* libgnat/s-soliin.adb, libgnat/s-soliin.ads: New files.
	* libgnat/s-thread.ads (Thread_Body_Enter): Update parameter profile.
	* libgnat/s-thread__ae653.adb (Get_Sec_Stack_Addr, Set_Sec_Stack_Addr):
	Remove routine.
	(Get_Sec_Stack, Set_Sec_Stack): Add routine.
	(Thread_Body_Enter): Update parameter profile and body to adapt to new
	System.Secondary_Stack.
	(Init_RTS): Update body for new System.Soft_Links names.
	* gcc-interface/Make-lang.in (GNAT_ADA_OBJS, GNATBIND_OBJS): Add
	s-soliin.o.

From-SVN: r253754
2017-10-14 16:25:21 +00:00
Jakub Jelinek
41f59cdada re PR bootstrap/82548 (After -r 253646 GCC 8.0 can't build cross compiler for mingw32)
PR bootstrap/82548
	* config.gcc (*-*-solaris2*, i[34567]86-*-cygwin*,
	x86_64-*-cygwin*, i[34567]86-*-mingw* | x86_64-*-mingw*): Append
	objects to extra_objs instead of overwriting it.

From-SVN: r253753
2017-10-14 14:32:17 +02:00
Uros Bizjak
b391462a87 * optabs.c (expand_memory_blockage): Use targetm.gen_memory_blockage.
From-SVN: r253752
2017-10-14 12:46:20 +02:00
Uros Bizjak
cca04bdd68 sync.md (FILD_ATOMIC/FIST_ATOMIC FP load peephole2): Use any_fp_register_operand as operand[3] predicate.
* config/i386/sync.md (FILD_ATOMIC/FIST_ATOMIC FP load peephole2):
	Use any_fp_register_operand as operand[3] predicate.  Simplify
	equality test for operands[2] and operands[4] memory location.
	(LDX_ATOMIC/STX_ATOMIC FP load peephole2): Ditto.
	(FILD_ATOMIC/FIST_ATOMIC FP load peephole2 with mem blockage): New.
	(LDX_ATOMIC/LDX_ATOMIC FP load peephole2 with mem blockage): Ditto.
	(FILD_ATOMIC/FIST_ATOMIC FP store peephole2): Use
	any_fp_register_operand as operand[1] predicate.  Simplify
	equality test for operands[0] and operands[3] memory location.
	(LDX_ATOMIC/STX_ATOMIC FP store peephole2): Ditto.
	(FILD_ATOMIC/FIST_ATOMIC FP store peephole2 with mem blockage): New.
	(LDX_ATOMIC/LDX_ATOMIC FP storepeephole2 with mem blockage): Ditto.

From-SVN: r253751
2017-10-14 11:31:29 +02:00
Uros Bizjak
51ced7e4f4 target-insns.def: Add memory_blockage.
* target-insns.def: Add memory_blockage.
	* optabs.c (expand_memory_blockage): New function.
	(expand_asm_memory_barrier): Rename ...
	(expand_asm_memory_blockage): ... to this.
	(expand_mem_thread_fence): Call expand_memory_blockage
	instead of expand_asm_memory_barrier.
	(expand_mem_singnal_fence): Ditto.
	(expand_atomic_load): Ditto.
	(expand_atomic_store): Ditto.
	* doc/md.texi (Standard Pattern Names For Generation):
	Document memory_blockage instruction pattern.

From-SVN: r253750
2017-10-14 11:10:45 +02:00
Jakub Jelinek
5c20e42977 re PR rtl-optimization/81423 (Wrong code at -O2)
PR rtl-optimization/81423
	* gcc.c-torture/execute/pr81423.c (foo): Add missing cast.  Change L
	suffixes to LL.
	(main): Punt if either long long isn't 64-bit or int isn't 32-bit.

From-SVN: r253749
2017-10-14 10:34:11 +02:00
Sebastian Perta
a0bf6cf784 rl78.c (rl78_emit_libcall): New function.
[gcc]
	* config/rl78/rl78.c (rl78_emit_libcall): New function.
	* config/rl78/rl78-protos.h (rl78_emit_libcall): New function.
	* config/rl78/rl78.md: New define_expand "adddi3".
[libgcc]
	* config/rl78/adddi3.S: New assembly file.
	* config/rl78/t-rl78: Added adddi3.S to LIB2ADD.

From-SVN: r253748
2017-10-13 20:33:58 -04:00
GCC Administrator
41841c3269 Daily bump.
From-SVN: r253747
2017-10-14 00:16:16 +00:00
Jakub Jelinek
8afb6a2cd6 re PR sanitizer/82353 (runtime ubsan crash)
PR sanitizer/82353
	* g++.dg/ubsan/pr82353-2.C: New test.
	* g++.dg/ubsan/pr82353-2-aux.cc: New file.
	* g++.dg/ubsan/pr82353-2.h: New file.

From-SVN: r253744
2017-10-13 22:19:17 +02:00
Jakub Jelinek
39382c092e c-gimplify.c (c_gimplify_expr): Handle [LR]ROTATE_EXPR like [LR]SHIFT_EXPR.
* c-gimplify.c (c_gimplify_expr): Handle [LR]ROTATE_EXPR like
	[LR]SHIFT_EXPR.

From-SVN: r253742
2017-10-13 22:06:40 +02:00
Jan Hubicka
5675a2f8c8 cfghooks.c (verify_flow_info): Disable check that all probabilities are set correctly.
* cfghooks.c (verify_flow_info): Disable check that all probabilities
	are set correctly.

From-SVN: r253741
2017-10-13 20:04:00 +00:00
Jeff Law
a1c47ade77 * tree-ssa-reassoc.c (reassociate_bb): Clarify code slighly.
From-SVN: r253740
2017-10-13 13:12:05 -06:00
Jason Merrill
5c9c546b9d PR c++/82357 - bit-field in template
* tree.c (cp_stabilize_reference): Just return a NON_DEPENDENT_EXPR.

From-SVN: r253739
2017-10-13 15:03:41 -04:00
Paul Thomas
e6110fa622 re PR fortran/81048 (incorrect derived type initialization)
2017-10-13  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/81048
	* resolve.c (resolve_symbol): Ensure that derived type array
	results get default initialization.

2017-10-13  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/81048
	* gfortran.dg/derived_init_4.f90 : New test.

From-SVN: r253738
2017-10-13 18:59:34 +00:00
Paolo Carlini
d7327979fe re PR c++/69078 ([C++14] function local static not initialized when only used in a generic/variadic lambda)
2017-10-13  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/69078
	* g++.dg/cpp1y/lambda-generic-69078-1.C: New.
	* g++.dg/cpp1y/lambda-generic-69078-2.C: Likewise.

From-SVN: r253736
2017-10-13 17:38:50 +00:00
Jakub Jelinek
e7176f75d6 re PR target/82274 (__builtin_mul_overflow fails to detect overflow for int64_t when compiled with -m32)
PR target/82274
	* internal-fn.c (expand_mul_overflow): If both operands have
	the same highpart of -1 or 0 and the topmost bit of lowpart
	is different, overflow is if res <= 0 rather than res < 0.

	* libgcc2.c (__mulvDI3): If both operands have
	the same highpart of -1 and the topmost bit of lowpart is 0,
	multiplication overflows even if both lowparts are 0.

	* gcc.dg/pr82274-1.c: New test.
	* gcc.dg/pr82274-2.c: New test.

From-SVN: r253734
2017-10-13 19:19:12 +02:00
Paolo Carlini
8de7190350 re PR c++/80873 (ICE in tsubst_copy when trying to use an overloaded function without a definition in a lambda)
2017-10-13  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/80873
	* g++.dg/cpp1y/auto-fn41.C: New.
	* g++.dg/cpp1y/auto-fn42.C: Likewise.

From-SVN: r253733
2017-10-13 16:50:13 +00:00
Pat Haugen
96ec425f5d rs6000.c (rs6000_builtin_vectorization_cost): Remove TARGET_P9_VECTOR code for unaligned_load case.
* config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Remove
	TARGET_P9_VECTOR code for unaligned_load case.

From-SVN: r253731
2017-10-13 16:05:53 +00:00
Mike Frysinger
b015bcbb16 fixinc.in (dirname): Change sed from 's|[^/]*/||' to 's|[^/]*//*||'.
2017-10-13  Mike Frysinger  <vapier@chromium.org>

	* fixinc.in (dirname): Change sed from 's|[^/]*/||' to
	's|[^/]*//*||'.

From-SVN: r253730
2017-10-13 09:28:41 -06:00
Jan Hubicka
65991ea3f8 * lto-lang.c (lto_post_options): Clean shlib flag when not doing PIC.
From-SVN: r253729
2017-10-13 13:44:05 +00:00
Jan Hubicka
9cdc325aa7 cfghooks.c (verify_flow_info): Check that edge probabilities are set.
* cfghooks.c (verify_flow_info): Check that edge probabilities are
	set.

From-SVN: r253728
2017-10-13 13:37:49 +00:00
David Malcolm
15f7a46926 C++: show location of unclosed extern "C" specifications
If the user fails to close an extern "C" linkage specifier, and then
uses templates, they will run into "template with C linkage" errors.

From personal experience, it can be hard to tell where the
extern "C" began.  As of r251026 there will be a message highlighting
the unclosed '{', but this may be hard to spot at the very end of
the errors.

This patch adds a note to the various diagnostics that complain
about C linkage, showing the user where the extern "C" specification
began.

gcc/cp/ChangeLog:
	* cp-tree.h (maybe_show_extern_c_location): New decl.
	* decl.c (grokfndecl): When complaining about literal operators
	with C linkage, issue a note giving the location of the
	extern "C".
	* parser.c (cp_parser_new): Initialize new field
	"innermost_linkage_specification_location".
	(cp_parser_linkage_specification): Store the location
	of the linkage specification within the cp_parser.
	(cp_parser_explicit_specialization): When complaining about
	template specializations with C linkage, issue a note giving the
	location of the extern "C".
	(cp_parser_explicit_template_declaration): Likewise for templates.
	(maybe_show_extern_c_location): New function.
	* parser.h (struct cp_parser): New field
	"innermost_linkage_specification_location".

gcc/testsuite/ChangeLog:
	* g++.dg/cpp0x/udlit-extern-c.C: New test case.
	* g++.dg/diagnostic/unclosed-extern-c.C: Add example of a template
	erroneously covered by an unclosed extern "C".
	* g++.dg/template/extern-c.C: New test case.

From-SVN: r253726
2017-10-13 12:42:39 +00:00
Jonathan Wakely
3b0dd4fea2 PR libstdc++/82522 overload map insert functions for rvalues (LWG 2354)
PR libstdc++/82522
	* doc/xml/manual/intro.xml: Document LWG 2354 changes.
	* include/bits/stl_map.h (map::insert(value_type&&))
	(map::insert(const_iterator, value_type&&)): Add overload for rvalues.
	* include/bits/stl_multimap.h (multimap::insert(value_type&&))
	(multimap::insert(const_iterator, value_type&&)): Likewise.
	* include/bits/unordered_map.h (unordered_map::insert(value_type&&))
	(unordered_map::insert(const_iterator, value_type&&))
	(unordered_multimap::insert(value_type&&))
	(unordered_multimap::insert(const_iterator, value_type&&)): Likewise.
	* testsuite/23_containers/map/modifiers/insert/dr2354.cc: New test.
	* testsuite/23_containers/multimap/modifiers/insert/dr2354.cc: New
	test.
	* testsuite/23_containers/unordered_map/insert/dr2354.cc: New test.
	* testsuite/23_containers/unordered_multimap/insert/dr2354.cc: New
	test.

From-SVN: r253725
2017-10-13 13:39:32 +01:00
Jonathan Wakely
d1e85aa999 PR libstdc++/82481 Suppress clang-tidy warnings
PR libstdc++/82481
	* include/std/mutex (call_once): Suppress clang-tidy warnings about
	dangling references.

From-SVN: r253724
2017-10-13 13:39:24 +01:00
Nathan Sidwell
7143b9d605 [PATCH] Tree structure marking
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00846.html
	* tree-core.h (tree_contains_struct): Make bool.
	* tree.c (tree_contains_struct): Likewise.
	* tree.h (MARK_TS_BASE): Remove do ... while (0) idiom.
	(MARK_TS_TYPED, MARK_TS_COMMON, MARK_TS_TYPE_COMMON,
	MARK_TS_TYPE_WITH_LANG_SPECIFIC, MARK_TS_DECL_MINIMAL,
	MARK_TS_DECL_COMMON, MARK_TS_DECL_WRTL, MARK_TS_DECL_WITH_VIS,
	MARK_TS_DECL_NON_COMMON): Likewise, use comma operator.

From-SVN: r253723
2017-10-13 12:18:25 +00:00
Richard Biener
99758d1a4b 2017-10-13 Richard Biener <rguenther@suse.de>
* graphite-isl-ast-to-gimple.c
	(translate_isl_ast_to_gimple::get_rename_from_scev): Remove unused
	parameters and dominance check.
	(translate_isl_ast_to_gimple::graphite_copy_stmts_from_block): Adjust.
	(translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Likewise.
	(translate_isl_ast_to_gimple::graphite_regenerate_ast_isl):
	Do not update SSA form here or do intermediate IL verification.
	* graphite.c: Include tree-ssa.h and tree-into-ssa.h.
	(graphite_initialize): Remove check on the number of loops in
	the function and inline into graphite_transform_loops.
	(graphite_finalize): Inline into graphite_transform_loops.
	(graphite_transform_loops): Perform SSA update and IL verification
	here.
	* params.def (PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION): Remove.

	* gcc.dg/graphite/pr35356-3.c: XFAIL again.
	* gcc.dg/graphite/pr81373-2.c: Copy from gcc.dg/graphite/pr81373.c
	with alternate flags.

From-SVN: r253721
2017-10-13 11:02:35 +00:00
Richard Biener
6fe00fb72a 2017-10-13 Richard Biener <rguenther@suse.de>
* graphite-isl-ast-to-gimple.c
	(translate_isl_ast_to_gimple::get_rename_from_scev): Remove unused
	parameters and dominance check.
	(translate_isl_ast_to_gimple::graphite_copy_stmts_from_block): Adjust.
	(translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Likewise.
	(translate_isl_ast_to_gimple::graphite_regenerate_ast_isl):
	Do not update SSA form here or do intermediate IL verification.
	* graphite.c: Include tree-ssa.h and tree-into-ssa.h.
	(graphite_initialize): Remove check on the number of loops in
	the function and inline into graphite_transform_loops.
	(graphite_finalize): Inline into graphite_transform_loops.
	(graphite_transform_loops): Perform SSA update and IL verification
	here.
	* params.def (PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION): Remove.

	* gcc.dg/graphite/pr35356-3.c: XFAIL again.
	* gcc.dg/graphite/pr81373-2.c: Copy from gcc.dg/graphite/pr81373.c
	with alternate flags.

From-SVN: r253720
2017-10-13 11:02:05 +00:00
Richard Biener
1a8821c54a graphite-isl-ast-to-gimple.c (max_mode_int_precision, [...]): Avoid global constructor by moving ...
2017-10-13  Richard Biener  <rguenther@suse.de>

	* graphite-isl-ast-to-gimple.c (max_mode_int_precision,
	graphite_expression_type_precision): Avoid global constructor
	by moving ...
	(translate_isl_ast_to_gimple::translate_isl_ast_to_gimple): Here.
	(translate_isl_ast_to_gimple::graphite_expr_type): Add type
	member.
	(translate_isl_ast_to_gimple::translate_isl_ast_node_for): Use it.
	(translate_isl_ast_to_gimple::build_iv_mapping): Likewise.
	(translate_isl_ast_to_gimple::graphite_create_new_guard): Likewise.
	* graphite-sese-to-poly.c (build_original_schedule): Return nothing.

	* gcc.dg/graphite/scop-10.c: Enlarge array to avoid undefined
	behavior.
	* gcc.dg/graphite/scop-7.c: Likewise.
	* gcc.dg/graphite/scop-8.c: Likewise.

From-SVN: r253719
2017-10-13 10:40:42 +00:00
H.J. Lu
2ecf9ac706 i386: Check red zone size in push peephole2
Check red zone size, instead of if red zone is available, in push
peephole2s.

gcc/

	PR target/82499
	* config/i386/i386.h (ix86_red_zone_size): New.
	* config/i386/i386.md (push peephole2s): Replace
	"!ix86_using_red_zone ()" with "ix86_red_zone_size == 0".

gcc/testsuite/

	PR target/82499
	* gcc.target/i386/pr82499-1.c: New file.
	* gcc.target/i386/pr82499-2.c: Likewise.
	* gcc.target/i386/pr82499-3.c: Likewise.

From-SVN: r253718
2017-10-13 03:04:59 -07:00
Richard Sandiford
8649149a3c Prevent invalid register mode changes in combine
This patch stops combine from changing the mode of an existing register
in-place if doing so would change the size of the underlying register
allocation size, as given by REGMODE_NATURAL_SIZE.  Without this,
many tests fail in adjust_reg_mode after SVE is added.  One example
is gcc.c-torture/compile/20090401-1.c.

2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

gcc/
	* combine.c (can_change_dest_mode): Reject changes in
	REGMODE_NATURAL_SIZE.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>

From-SVN: r253717
2017-10-13 09:58:23 +00:00
Richard Sandiford
250a60f387 Make more use of GET_MODE_UNIT_BITSIZE
This patch is like the previous GET_MODE_UNIT_SIZE one,
but for bit rather than byte sizes.

2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

gcc/
	* cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_BITSIZE.
	(expand_debug_source_expr): Likewise.
	* combine.c (combine_simplify_rtx): Likewise.
	* cse.c (fold_rtx): Likewise.
	* fwprop.c (canonicalize_address): Likewise.
	* targhooks.c (default_shift_truncation_mask): Likewise.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>

From-SVN: r253716
2017-10-13 09:53:00 +00:00
Richard Sandiford
fb98441af9 Make more use of GET_MODE_UNIT_SIZE
This patch uses GET_MODE_UNIT_SIZE instead of GET_MODE_SIZE in
cases where, for compound modes, the mode of the scalar elements
is what matters.  E.g. the choice between truncation and extension
is really based on the modes of the consistuent scalars rather
than the mode as a whole.

None of the existing code was wrong.  The patch simply makes
things easier when converting to variable-sized modes.

2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

gcc/
	* optabs.c (add_equal_note): Use GET_MODE_UNIT_SIZE.
	(widened_mode): Likewise.
	(expand_unop): Likewise.
	* ree.c (transform_ifelse): Likewise.
	(merge_def_and_ext): Likewise.
	(combine_reaching_defs): Likewise.
	* simplify-rtx.c (simplify_unary_operation_1): Likewise.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>

From-SVN: r253715
2017-10-13 09:41:39 +00:00
Richard Sandiford
90f2b7e220 Make more use of byte_lowpart_offset
This patch uses byte_lowpart_offset in places that open-coded the
calculation.

2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

gcc/
	* caller-save.c (replace_reg_with_saved_mem): Use byte_lowpart_offset.
	* combine.c (gen_lowpart_for_combine): Likewise.
	* dwarf2out.c (rtl_for_decl_location): Likewise.
	* final.c (alter_subreg): Likewise.
	* rtlhooks.c (gen_lowpart_general): Likewise.
	(gen_lowpart_if_possible): Likewise.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>

From-SVN: r253714
2017-10-13 09:32:29 +00:00
Richard Sandiford
610c45fcbf Make more use of subreg_lowpart_offset
This patch uses subreg_lowpart_offset in places that open-coded
the calculation.  It also uses it in regcprop.c to test whether,
after a mode change, the first register in a multi-register group
is still the right one.

2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

gcc/
	* calls.c (expand_call): Use subreg_lowpart_offset.
	* cse.c (cse_insn): Likewise.
	* regcprop.c (copy_value): Likewise.
	(copyprop_hardreg_forward_1): Likewise.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>

From-SVN: r253713
2017-10-13 09:23:54 +00:00