Commit Graph

157136 Commits

Author SHA1 Message Date
Pierre-Marie de Rodat
5664fd68a1 Add ChangeLog entries, missing from last commit
From-SVN: r253946
2017-10-20 16:20:40 +00:00
Pierre-Marie de Rodat
8f8f531f0d sem_dim.adb (Analyze_Dimension_Binary_Op): Accept with a warning to compare a dimensioned expression with a literal.
gcc/ada/

2017-10-20  Yannick Moy  <moy@adacore.com>

	* sem_dim.adb (Analyze_Dimension_Binary_Op): Accept with a warning to
	compare a dimensioned expression with a literal.
	(Dim_Warning_For_Numeric_Literal): Do not issue a warning for the
	special value zero.
	* doc/gnat_ugn/gnat_and_program_execution.rst: Update description of
	dimensionality system in GNAT.
	* gnat_ugn.texi: Regenerate.

2017-10-20  Yannick Moy  <moy@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function.Freeze_Expr_Types): Remove
	inadequate silencing of errors.
	* sem_util.adb (Check_Part_Of_Reference): Do not issue an error when
	checking the subprogram body generated from an expression function,
	when this is done as part of the preanalysis done on expression
	functions, as the subprogram body may not yet be attached in the AST.
	The error if any will be issued later during the analysis of the body.
	(Is_Aliased_View): Trivial rewrite with Is_Formal_Object.

2017-10-20  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch8.adb (Update_Chain_In_Scope): Add missing [-gnatwu] marker for
	warning on ineffective use clause.

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

	* exp_ch11.ads (Warn_If_No_Local_Raise): Declare.
	* exp_ch11.adb (Expand_Exception_Handlers): Use Warn_If_No_Local_Raise
	to issue the warning on the absence of local raise.
	(Possible_Local_Raise): Do not issue the warning for Call_Markers.
	(Warn_If_No_Local_Raise): New procedure to issue the warning on the
	absence of local raise.
	* sem_elab.adb: Add with and use clauses for Exp_Ch11.
	(Record_Elaboration_Scenario): Call Possible_Local_Raise in the cases
	where a scenario could give rise to raising Program_Error.
	* sem_elab.adb: Typo fixes.
	* fe.h (Warn_If_No_Local_Raise): Declare.
	* gcc-interface/gigi.h (get_exception_label): Change return type.
	* gcc-interface/trans.c (gnu_constraint_error_label_stack): Change to
	simple vector of Entity_Id.
	(gnu_storage_error_label_stack): Likewise.
	(gnu_program_error_label_stack): Likewise.
	(gigi): Adjust to above changes.
	(Raise_Error_to_gnu): Likewise.
	(gnat_to_gnu) <N_Goto_Statement>: Set TREE_USED on the label.
	(N_Push_Constraint_Error_Label): Push the label onto the stack.
	(N_Push_Storage_Error_Label): Likewise.
	(N_Push_Program_Error_Label): Likewise.
	(N_Pop_Constraint_Error_Label): Pop the label from the stack and issue
	a warning on the absence of local raise.
	(N_Pop_Storage_Error_Label): Likewise.
	(N_Pop_Program_Error_Label): Likewise.
	(push_exception_label_stack): Delete.
	(get_exception_label): Change return type to Entity_Id and adjust.
	* gcc-interface/utils2.c (build_goto_raise): Change type of first
	parameter to Entity_Id and adjust.  Set TREE_USED on the label.
	(build_call_raise): Adjust calls to get_exception_label and also
	build_goto_raise.
	(build_call_raise_column): Likewise.
	(build_call_raise_range): Likewise.
	* doc/gnat_ugn/building_executable_programs_with_gnat.rst (-gnatw.x):
	Document actual default behavior.

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

	* einfo.ads: Minor consistent punctuation in comment.  All numbered
	items in the comment of Is_Internal are now terminated with a period.

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

	* exp_util.adb (Build_Temporary): Mark created temporary entity as
	internal.

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

	* sem_type.adb (In_Generic_Actual): Simplified.

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

	* sem_ch12.adb (Check_Formal_Package_Instance): Add sanity check to
	verify a renaming exists for a generic formal before comparing it to
	the actual as defaulted formals will not have a renamed_object.

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

	* exp_ch6.adb (Replace_Returns): Fix wrong management of
	N_Block_Statement nodes.

gcc/testsuite/

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

	* gnat.dg/default_pkg_actual.adb, gnat.dg/default_pkg_actual2.adb: New
	testcases.

From-SVN: r253945
2017-10-20 16:05:28 +00:00
Pierre-Marie de Rodat
e201023c0e exp_aggr.adb (Initialize_Array_Component): Avoid adjusting a component of an array aggregate if...
gcc/ada/

2017-10-20  Bob Duff  <duff@adacore.com>

	* exp_aggr.adb (Initialize_Array_Component): Avoid adjusting a
	component of an array aggregate if it is initialized by a
	build-in-place function call.
	* exp_ch6.adb (Is_Build_In_Place_Result_Type): Use -gnatd.9 to disable
	bip for nonlimited types.
	* debug.adb: Document -gnatd.9.

2017-10-20  Bob Duff  <duff@adacore.com>

	* sem_ch12.adb: Remove redundant setting of Parent.

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

	* sem_ch4.adb (Find_Concatenation_Types): Filter out operators if one
	of the operands is a string literal.

2017-10-20  Bob Duff  <duff@adacore.com>

	* einfo.ads: Comment fix.

2017-10-20  Clement Fumex  <fumex@adacore.com>

	* switch-c.adb: Remove -gnatwm from the switches triggered by -gnateC.

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

	* sem_dim.adb (Extract_Power): Accept dimension values that are not
	non-negative integers when the dimensioned base type is an Integer
	type.

gcc/testsuite/

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

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

From-SVN: r253941
2017-10-20 15:08:36 +00:00
Bob Duff
3a248f7cec sinfo.ads, sinfo.adb (Alloc_For_BIP_Return): New flag to indicate that an allocator came from a b-i-p return statement.
2017-10-20  Bob Duff  <duff@adacore.com>

	* sinfo.ads, sinfo.adb (Alloc_For_BIP_Return): New flag to indicate
	that an allocator came from a b-i-p return statement.
	* exp_ch4.adb (Expand_Allocator_Expression): Avoid adjusting the return
	object of a nonlimited build-in-place function call.
	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Set the
	Alloc_For_BIP_Return flag on generated allocators.
	* sem_ch5.adb (Analyze_Assignment): Move Assert to where it can't fail.
	If the N_Assignment_Statement has been transformed into something else,
	then Should_Transform_BIP_Assignment won't work.
	* exp_ch3.adb (Expand_N_Object_Declaration): A previous revision said,
	"Remove Adjust if we're building the return object of an extended
	return statement in place." Back out that part of the change, because
	the Alloc_For_BIP_Return flag is now used for that.

From-SVN: r253940
2017-10-20 14:51:32 +00:00
Jakub Jelinek
2185b58266 i386.md (isa): Remove fma_avx512f.
* config/i386/i386.md (isa): Remove fma_avx512f.
	* config/i386/sse.md (<avx512>_fmadd_<mode>_mask<round_name>,
	<avx512>_fmadd_<mode>_mask3<round_name>,
	<avx512>_fmsub_<mode>_mask<round_name>,
	<avx512>_fmsub_<mode>_mask3<round_name>,
	<avx512>_fnmadd_<mode>_mask<round_name>,
	<avx512>_fnmadd_<mode>_mask3<round_name>,
	<avx512>_fnmsub_<mode>_mask<round_name>,
	<avx512>_fnmsub_<mode>_mask3<round_name>,
	<avx512>_fmaddsub_<mode>_mask<round_name>,
	<avx512>_fmaddsub_<mode>_mask3<round_name>,
	<avx512>_fmsubadd_<mode>_mask<round_name>,
	<avx512>_fmsubadd_<mode>_mask3<round_name>): Remove isa attribute.
	(*vec_widen_umult_even_v16si<mask_name>,
	*vec_widen_smult_even_v16si<mask_name>): Likewise.
	(<mask_codefor>avx512bw_dbpsadbw<mode><mask_name>): Likewise.

From-SVN: r253939
2017-10-20 16:31:03 +02:00
Igor Tsimbalist
771c6b44dd Add documentation for fcf-protection option and nocf_check attribute
gcc/doc/
	* extend.texi: Add 'nocf_check' documentation.
	* gimple.texi: Add second parameter to gimple_build_call_from_tree.
	* invoke.texi: Add -fcf-protection documentation.
	* rtl.texi: Add REG_CALL_NOTRACK documenation.

From-SVN: r253938
2017-10-20 16:03:07 +02:00
Richard Biener
51e28fffbe re PR tree-optimization/82473 (ICE in vect_get_vec_def_for_stmt_copy, at tree-vect-stmts.c:1524)
2017-10-20  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/82473
	* tree-vect-loop.c (vectorizable_reduction): Properly get at
	the largest input type.

	* gcc.dg/torture/pr82473.c: New testcase.

From-SVN: r253937
2017-10-20 13:43:47 +00:00
Igor Tsimbalist
5c5f0b65ee Add generic part for Intel CET enabling. The spec is available at
https://software.intel.com/sites/default/files/managed/4d/2a/control-flow-enforcement-technology-preview.pdf

A proposal is to introduce a target independent flag
-fcf-protection=[none|branch|return|full] with a semantic to
instrument a code to control validness or integrity of control-flow
transfers using jump and call instructions. The main goal is to detect
and block a possible malware execution through transfer the execution
to unknown target address. Implementation could be either software or
target based. Any target platforms can provide their implementation
for instrumentation under this option.

The compiler should instrument any control-flow transfer points in a
program (ex. call/jmp/ret) as well as any landing pads, which are
targets of control-flow transfers.

A new 'nocf_check' attribute is introduced to provide hand tuning
support. The attribute directs the compiler to skip a call to a
function and a function's landing pad from instrumentation. The
attribute can be used for function and pointer to function types,
otherwise it will be ignored.

Currently all platforms except i386 will report the error and do no
instrumentation. i386 will provide the implementation based on a
specification published by Intel for a new technology called
Control-flow Enforcement Technology (CET).

gcc/c-family/
	* c-attribs.c (handle_nocf_check_attribute): New function.
	(c_common_attribute_table): Add 'nocf_check' handling.

gcc/c/
	* gimple-parser.c: Add second argument NULL to
	gimple_build_call_from_tree.

gcc/
	* attrib.c (comp_type_attributes): Check nocf_check attribute.
	* cfgexpand.c (expand_call_stmt): Set REG_CALL_NOCF_CHECK for
	call insn.
	* combine.c (distribute_notes): Add REG_CALL_NOCF_CHECK handling.
	* common.opt: Add fcf-protection flag.
	* emit-rtl.c (try_split): Add REG_CALL_NOCF_CHECK handling.
	* flag-types.h: Add enum cf_protection_level.
	* gimple.c (gimple_build_call_from_tree): Add second parameter.
	Add 'nocf_check' attribute propagation to gimple call.
	* gimple.h (gf_mask): Add GF_CALL_NOCF_CHECK.
	(gimple_build_call_from_tree): Update prototype.
	(gimple_call_nocf_check_p): New function.
	(gimple_call_set_nocf_check): Likewise.
	* gimplify.c: Add second argument to gimple_build_call_from_tree.
	* ipa-icf.c: Add nocf_check attribute in statement hash.
	* recog.c (peep2_attempt): Add REG_CALL_NOCF_CHECK handling.
	* reg-notes.def: Add REG_NOTE (CALL_NOCF_CHECK).
	* toplev.c (process_options): Add flag_cf_protection handling.

From-SVN: r253936
2017-10-20 15:09:38 +02:00
Richard Earnshaw
e64944ac65 [arm] Fix architecture selection when building libatomic with automatic FPU selection
Libatomic builds a few functions for Arm with an explicit -march
option.  This option does not specify an FPU, which can lead to
problems when targeting a hard-float or softfp environment since the
architecture appears to be incompatible with the selected ABI.

The fix is simple enough, just add +fp (the minimum floating point
option) to the architecture.  We don't use anything from the FP
architecture, so it shouldn't really change anything; and if we are
building for -mfloat-abi=soft the canonicalization process will remove
the unnecessary fp attributes anyway.

	* Makefile.am: (IFUNC_OPTIONS): Set the architecture to
	-march=armv7-a+fp on Linux/Arm.
	* Makefile.in: Regenerated.

From-SVN: r253935
2017-10-20 12:33:39 +00:00
Jan Hubicka
ffa3ce5322 * x86-tune-costs.h (core_cost): Fix div, move and sqrt latencies.
From-SVN: r253934
2017-10-20 12:25:18 +00:00
Richard Biener
1031b5772a re PR tree-optimization/82603 (ICE in ifcvt_local_dce w/ -O2 -ftree-loop-vectorize)
2017-10-20  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/82603
	* tree-if-conv.c (predicate_mem_writes): Make sure to only
	remove false predicated stores.

	* gcc.dg/torture/pr82603.c: New testcase.

From-SVN: r253933
2017-10-20 11:21:11 +00:00
Richard Biener
c46bd47200 2017-10-20 Richard Biener <rguenther@suse.de>
* graphite-isl-ast-to-gimple.c
	(translate_isl_ast_to_gimple::graphite_copy_stmts_from_block):
	Remove return value and simplify, dump copied stmt after lhs
	adjustment.
	(translate_isl_ast_to_gimple::translate_isl_ast_node_user):
	Reduce dump verbosity.
	(gsi_insert_earliest): Likewise.
	(translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Adjust.
	* graphite.c (print_global_statistics): Adjust dumping.
	(print_graphite_scop_statistics): Likewise.
	(print_graphite_statistics): Do not dump loops here.
	(graphite_transform_loops): But here.

From-SVN: r253930
2017-10-20 10:49:24 +00:00
Tom de Vries
424101ddcc Reduce stack size in gcc.dg/tree-ssa/ldist-27.c
2017-10-20  Tom de Vries  <tom@codesourcery.com>

	* gcc.dg/tree-ssa/ldist-27.c: Remove dg-require-stack-size.
	(main): Move s ...
	(s): ... here.

From-SVN: r253929
2017-10-20 10:02:49 +00:00
Nicolas Roche
e8679fd52c configure.ac (ACX_PROG_GNAT): Append "libgnat" to the include dir.
* configure.ac (ACX_PROG_GNAT): Append "libgnat" to the include dir.
	* configure: Regenerate.

From-SVN: r253928
2017-10-20 09:29:35 +00:00
Jakub Jelinek
356fcc67fb re PR target/82158 (_Noreturn functions that do return clobber caller's registers on ARM32 (but not other arches))
PR target/82158
	* tree-cfg.c (pass_warn_function_return::execute): In noreturn
	functions when optimizing replace GIMPLE_RETURN stmts with
	calls to __builtin_unreachable ().

	* gcc.dg/tree-ssa/noreturn-1.c: New test.

From-SVN: r253926
2017-10-20 09:35:48 +02:00
Jakub Jelinek
9a45ffbd12 re PR sanitizer/82595 (bootstrap fails in libsanitizer on powerpc64-unknown-linux-gnu)
PR sanitizer/82595
	* config/gnu-user.h (LIBTSAN_EARLY_SPEC): Add libtsan_preinit.o
	for -fsanitize=thread link of executables.
	(LIBLSAN_EARLY_SPEC): Add liblsan_preinit.o for -fsanitize=leak
	link of executables.

	* lsan/lsan.h (__lsan_init): Add SANITIZER_INTERFACE_ATTRIBUTE.
	* lsan/Makefile.am (nodist_toolexeclib_HEADERS): Add
	liblsan_preinit.o.
	(lsan_files): Remove lsan_preinit.cc.
	(liblsan_preinit.o): New rule.
	* lsan/Makefile.in: Regenerated.

From-SVN: r253925
2017-10-20 09:32:35 +02:00
Jakub Jelinek
42a764f76f re PR target/82370 (AVX512 can use a memory operand for immediate-count vpsrlw, but gcc doesn't.)
PR target/82370
	* config/i386/sse.md (VI248_AVX2, VI248_AVX512BW, VI248_AVX512BW_2):
	New mode iterators.
	(<shift_insn><mode>3<mask_name>): Change the last of the 3
	define_insns for logical vector shifts to use VI248_AVX512BW
	iterator instead of VI48_AVX512, remove <mask_mode512bit_condition>
	condition, useless isa and prefix attributes.  Change the first
	2 of these define_insns to ...
	(<mask_codefor><shift_insn><mode>3<mask_name>): ... this, new
	define_insn for avx512vl.
	(<shift_insn><mode>3): ... and this, new define_insn without
	masking for non-avx512vl.

	* gcc.target/i386/avx-pr82370.c: New test.
	* gcc.target/i386/avx2-pr82370.c: New test.
	* gcc.target/i386/avx512f-pr82370.c: New test.
	* gcc.target/i386/avx512bw-pr82370.c: New test.
	* gcc.target/i386/avx512vl-pr82370.c: New test.
	* gcc.target/i386/avx512vlbw-pr82370.c: New test.

From-SVN: r253924
2017-10-20 09:30:33 +02:00
Jakub Jelinek
c274eebe4e re PR target/82370 (AVX512 can use a memory operand for immediate-count vpsrlw, but gcc doesn't.)
PR target/82370
	* config/i386/sse.md (*andnot<mode>3,
	<mask_codefor><code><mode>3<mask_name>, *<code><mode>3): Split
	(=v,v,vm) alternative into (=x,x,xm) and (=v,v,vm), for 128-bit
	and 256-bit vectors, the (=x,x,xm) alternative and when mask is
	not applied use empty suffix even for TARGET_AVX512VL.
	* config/i386/subst.md (mask_prefix3, mask_prefix4): When mask
	is applied, supply evex,evex or evex,evex,evex instead of just
	evex.

From-SVN: r253923
2017-10-20 09:28:25 +02:00
Julia Koval
b8cca31c48 Add GFNI command line options and macros
gcc/
	* common/config/i386/i386-common.c (OPTION_MASK_ISA_GFNI_SET,
	(OPTION_MASK_ISA_GFNI_UNSET): New.
	(ix86_handle_option): Handle OPT_mgfni.
	* config/i386/cpuid.h (bit_GFNI): New.
	* config/i386/driver-i386.c (host_detect_local_cpu): Detect gfni.
	* config/i386/i386-c.c (ix86_target_macros_internal): Define __GFNI__.
	* config/i386/i386.c (ix86_target_string): Add -mgfni.
	(ix86_valid_target_attribute_inner_p): Add OPT_mgfni.
	* config/i386/i386.h (TARGET_GFNI, TARGET_GFNI_P): New.
	* config/i386/i386.opt: Add mgfni.

From-SVN: r253922
2017-10-20 06:31:33 +00:00
Orlando Arias
793c096d45 msp430.c (msp430_option_override): Disable -fdelete-null-pointer-checks.
* config/msp430/msp430.c (msp430_option_override): Disable
-fdelete-null-pointer-checks.
* doc/invoke.text (-fdelete-null-pointer-checks): Document that.

* lib/target-supports.exp (check_effective_target_keeps_null_pointer_checks):
Add msp430 to the list.

From-SVN: r253921
2017-10-20 00:49:57 -04:00
Paolo Carlini
b6b240edae re PR c++/82308 ([C++17] deduction of template arguments results in internal compiler error)
2017-10-19  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/82308
	* g++.dg/cpp1z/class-deduction45.C: New.

From-SVN: r253920
2017-10-20 00:30:41 +00:00
GCC Administrator
6d2bd9ff82 Daily bump.
From-SVN: r253919
2017-10-20 00:16:15 +00:00
Bob Duff
7d92172c18 exp_ch6.adb (Is_Build_In_Place_Result_Type): Fix silly bug -- "Typ" should be "T".
2017-10-19  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Is_Build_In_Place_Result_Type): Fix silly bug -- "Typ"
	should be "T".  Handle case of a subtype of a class-wide type.

From-SVN: r253916
2017-10-19 23:12:27 +00:00
Pierre-Marie de Rodat
fb9dd1c7c3 [multiple changes]
2017-10-19  Bob Duff  <duff@adacore.com>

	* exp_util.adb: (Process_Statements_For_Controlled_Objects): Clarify
	which node kinds can legitimately be ignored, and raise Program_Error
	for others.

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

	* sem_elab.adb (Compilation_Unit): Handle the case of a subprogram
	instantiation that acts as a compilation unit.
	(Find_Code_Unit): Reimplemented.
	(Find_Top_Unit): Reimplemented.
	(Find_Unit_Entity): New routine.
	(Process_Instantiation_SPARK): Correct the elaboration requirement a
	package instantiation imposes on a unit.

2017-10-19  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Is_Build_In_Place_Result_Type): Enable build-in-place
	for a narrow set of controlled types.

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

	* sinput.ads (Line_Start): Add pragma Inline.
	* widechar.ads (Is_Start_Of_Wide_Char): Likewise.

2017-10-19  Bob Duff  <duff@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Disable
	Make_Build_In_Place_Call_... for F(...)'Old, where F(...) is a
	build-in-place function call so that the temp is declared in the right
	place.

From-SVN: r253915
2017-10-19 23:08:29 +00:00
Alan Modra
ebd208bf7b PR82575, lto debugobj references __gnu_lto_slim, ld test liblto-17 fails
If __gnu_lto_slim is global, undefined, default visibility in the
early debug object, then it finds its way into .dynsym when creating
shared libraries.  __gnu_lto_slim in a symbol table (.dynsym or
.symtab) signals nm and other binutils that the object is an LTO
object needing a plugin, but that isn't the case for the ld liblti-17
tests.  So, make __gnu_lto_slim hidden to prevent it becoming
dynamic.  Further, make it weak because some linkers may warn on
finding an undefined global non-default visibility symbol.

	PR lto/82575
	* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
	Make discarded non-local symbols weak and hidden.

From-SVN: r253914
2017-10-20 09:36:20 +10:30
Jan Hubicka
ef9eec0b59 x86-tune-costs.h (generic_cost, core_cost): Correct costs of x87 and SSE instructions.
* x86-tune-costs.h (generic_cost, core_cost): Correct costs
	of x87 and SSE instructions.

From-SVN: r253911
2017-10-19 20:43:30 +00:00
Jan Hubicka
ef30ab837c asan.c (create_cond_insert_point): Do not update edge count.
* asan.c (create_cond_insert_point): Do not update edge count.
	* auto-profile.c (afdo_propagate_edge): Update for edge count removal.
	(afdo_propagate_circuit): Likewise.
	(afdo_calculate_branch_prob): Likewise.
	(afdo_annotate_cfg): Likewise.
	* basic-block.h (struct edge_def): Remove count.
	(edge_def::count): New accessor.
	* bb-reorder.c (rotate_loop): Update.
	(find_traces_1_round): Update.
	(connect_traces): Update.
	(sanitize_hot_paths): Update.
	* cfg.c (unchecked_make_edge): Update.
	(make_single_succ_edge): Update.
	(check_bb_profile): Update.
	(dump_edge_info): Update.
	(update_bb_profile_for_threading): Update.
	(scale_bbs_frequencies_int): Update.
	(scale_bbs_frequencies_gcov_type): Update.
	(scale_bbs_frequencies_profile_count): Update.
	(scale_bbs_frequencies): Update.
	* cfganal.c (connect_infinite_loops_to_exit): Update.
	* cfgbuild.c (compute_outgoing_frequencies): Update.
	(find_many_sub_basic_blocks): Update.
	* cfgcleanup.c (try_forward_edges): Update.
	(try_crossjump_to_edge): Update
	* cfgexpand.c (expand_gimple_cond): Update
	(expand_gimple_tailcall): Update
	(construct_exit_block): Update
	* cfghooks.c (verify_flow_info): Update
	(redirect_edge_succ_nodup): Update
	(split_edge): Update
	(make_forwarder_block): Update
	(duplicate_block): Update
	(account_profile_record): Update
	* cfgloop.c (find_subloop_latch_edge_by_profile): Update.
	* cfgloopanal.c (expected_loop_iterations_unbounded): Update.
	* cfgloopmanip.c (scale_loop_profile): Update.
	(loopify): Update.
	(lv_adjust_loop_entry_edge): Update.
	* cfgrtl.c (try_redirect_by_replacing_jump): Update.
	(force_nonfallthru_and_redirect): Update.
	(purge_dead_edges): Update.
	(rtl_flow_call_edges_add): Update.
	* cgraphunit.c (init_lowered_empty_function): Update.
	(cgraph_node::expand_thunk): Update.
	* gimple-pretty-print.c (dump_probability): Update.
	(dump_edge_probability): Update.
	* gimple-ssa-isolate-paths.c (isolate_path): Update.
	* haifa-sched.c (sched_create_recovery_edges): Update.
	* hsa-gen.c (convert_switch_statements): Update.
	* ifcvt.c (dead_or_predicable): Update.
	* ipa-inline-transform.c (inline_transform): Update.
	* ipa-split.c (split_function): Update.
	* ipa-utils.c (ipa_merge_profiles): Update.
	* loop-doloop.c (add_test): Update.
	* loop-unroll.c (unroll_loop_runtime_iterations): Update.
	* lto-streamer-in.c (input_cfg): Update.
	(input_function): Update.
	* lto-streamer-out.c (output_cfg): Update.
	* modulo-sched.c (sms_schedule): Update.
	* postreload-gcse.c (eliminate_partially_redundant_load): Update.
	* predict.c (maybe_hot_edge_p): Update.
	(unlikely_executed_edge_p): Update.
	(probably_never_executed_edge_p): Update.
	(dump_prediction): Update.
	(drop_profile): Update.
	(propagate_unlikely_bbs_forward): Update.
	(determine_unlikely_bbs): Update.
	(force_edge_cold): Update.
	* profile.c (compute_branch_probabilities): Update.
	* reg-stack.c (better_edge): Update.
	* shrink-wrap.c (handle_simple_exit): Update.
	* tracer.c (better_p): Update.
	* trans-mem.c (expand_transaction): Update.
	(split_bb_make_tm_edge): Update.
	* tree-call-cdce.c: Update.
	* tree-cfg.c (gimple_find_sub_bbs): Update.
	(gimple_split_edge): Update.
	(gimple_duplicate_sese_region): Update.
	(gimple_duplicate_sese_tail): Update.
	(gimple_flow_call_edges_add): Update.
	(insert_cond_bb): Update.
	(execute_fixup_cfg): Update.
	* tree-cfgcleanup.c (cleanup_control_expr_graph): Update.
	* tree-complex.c (expand_complex_div_wide): Update.
	* tree-eh.c (lower_resx): Update.
	(unsplit_eh): Update.
	(cleanup_empty_eh_move_lp): Update.
	* tree-inline.c (copy_edges_for_bb): Update.
	(freqs_to_counts): Update.
	(copy_cfg_body): Update.
	* tree-ssa-dce.c (remove_dead_stmt): Update.
	* tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
	* tree-ssa-loop-im.c (execute_sm_if_changed): Update.
	* tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update.
	(unloop_loops): Update.
	* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
	* tree-ssa-loop-split.c (connect_loops): Update.
	(split_loop): Update.
	* tree-ssa-loop-unswitch.c (hoist_guard): Update.
	* tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update.
	* tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update.
	* tree-ssa-reassoc.c (branch_fixup): Update.
	* tree-ssa-tail-merge.c (replace_block_by): Update.
	* tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update.
	(compute_path_counts): Update.
	(update_profile): Update.
	(recompute_probabilities): Update.
	(update_joiner_offpath_counts): Update.
	(estimated_freqs_path): Update.
	(freqs_to_counts_path): Update.
	(clear_counts_path): Update.
	(ssa_fix_duplicate_block_edges): Update.
	(duplicate_thread_path): Update.
	* tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update.
	(case_bit_test_cmp): Update.
	(collect_switch_conv_info): Update.
	(gen_inbound_check): Update.
	(do_jump_if_equal): Update.
	(emit_cmp_and_jump_insns): Update.
	* tree-tailcall.c (decrease_profile): Update.
	(eliminate_tail_call): Update.
	* tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
	(vect_do_peeling): Update.
	* tree-vect-loop.c (scale_profile_for_vect_loop): Update.
	* ubsan.c (ubsan_expand_null_ifn): Update.
	(ubsan_expand_ptr_ifn): Update.
	* value-prof.c (gimple_divmod_fixed_value): Update.
	(gimple_mod_pow2): Update.
	(gimple_mod_subtract): Update.
	(gimple_ic): Update.
	(gimple_stringop_fixed_value): Update.

From-SVN: r253910
2017-10-19 20:19:15 +00:00
Eric Botcazou
68581ee1c3 Fix oversights
From-SVN: r253909
2017-10-19 19:14:41 +00:00
Uros Bizjak
d4e7de5811 re PR target/82618 (Inefficient double-word subtraction on x86_64)
PR target/82618
	* config/i386/i386.md (sub to cmp): New peephole2 pattern.

testsuite/ChangeLog:

	PR target/82618
	* gcc.target/i386/pr82618.c: New test.


Co-Authored-By: Jakub Jelinek <jakub@redhat.com>

From-SVN: r253905
2017-10-19 19:35:39 +02:00
Alexander Monakov
158ec0181d ira-color: fix allocno_priority_compare_func for qsort (PR 82395)
PR rtl-optimization/82395
	* ira-color.c (allocno_priority_compare_func): Fix comparison step
	based on non_spilled_static_chain_regno_p.

From-SVN: r253904
2017-10-19 19:48:34 +03:00
Uros Bizjak
8fb0214b66 i386.c (output_387_binary_op): Rewrite SSE part.
* config/i386/i386.c (output_387_binary_op): Rewrite SSE part.
	(ix86_emit_mode_set): Rewrite insn mnemonic construction.
	(ix86_prepare_fp_compare_args): Redefine is_sse as bool.

From-SVN: r253903
2017-10-19 18:32:55 +02:00
Martin Sebor
f5ba8fd108 PR tree-optimization/82596 - missing -Warray-bounds on an out-of-bounds
PR tree-optimization/82596 - missing -Warray-bounds on an out-of-bounds
  index into string literal

gcc/ChangeLog:
	* tree.c (array_at_struct_end_p): Handle STRING_CST.

gcc/testsuite/ChangeLog:
	* gcc/testsuite/gcc.dg/pr82596.c: New test.

From-SVN: r253902
2017-10-19 10:03:07 -06:00
Eric Botcazou
9e878cf1ba asan.c (handle_builtin_alloca): Deal with all alloca variants.
* asan.c (handle_builtin_alloca): Deal with all alloca variants.
	(get_mem_refs_of_builtin_call): Likewise.
	* builtins.c (expand_builtin_apply): Adjust call to
	allocate_dynamic_stack_space.
	(expand_builtin_alloca): For __builtin_alloca_with_align_and_max, pass
	the third argument to allocate_dynamic_stack_space, otherwise -1.
	(expand_builtin): Deal with all alloca variants.
	(is_inexpensive_builtin): Likewise.
	* builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX): New.
	* calls.c (special_function_p): Deal with all alloca variants.
	(initialize_argument_information): Adjust call to
	allocate_dynamic_stack_space.
	(expand_call): Likewise.
	* cfgexpand.c (expand_call_stmt): Deal with all alloca variants.
	* doc/extend.texi (Built-ins): Add __builtin_alloca_with_align_and_max
	* explow.c (allocate_dynamic_stack_space): Add MAX_SIZE parameter and
	use it for the stack usage computation.
	* explow.h (allocate_dynamic_stack_space): Adjust prototype.
	* function.c (gimplify_parameters): Turn BUILT_IN_ALLOCA_WITH_ALIGN
	into BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX and pass maximum size.
	* gimple-ssa-warn-alloca.c (alloca_call_type): Simplify control flow.
	Take into account 3rd argument of __builtin_alloca_with_align_and_max.
	(in_loop_p): Remove first argument and useless check.
	(pass_walloca::execute): Remove useless test and adjust call to above.
	* gimple.c (gimple_build_call_from_tree): Deal with all alloc variants
	* gimplify.c (gimplify_vla_decl): Turn BUILT_IN_ALLOCA_WITH_ALIGN into
	BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX and pass maximum size.
	(gimplify_call_expr): Deal with all alloca variants.
	* hsa-gen.c (gen_hsa_alloca): Likewise.
	(gen_hsa_insns_for_call): Likewise.
	* ipa-pure-const.c (special_builtin_state): Likewise.
	* tree-chkp.c (chkp_build_returned_bound): Likewise.
	* tree-object-size.c (alloc_object_size): Likewise.
	* tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Likewise.
	(call_may_clobber_ref_p_1): Likewise.
	* tree-ssa-ccp.c (evaluate_stmt): Likewise.
	(ccp_fold_stmt): Likewise.
	(optimize_stack_restore): Likewise.
	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
	(mark_all_reaching_defs_necessary_1): Likewise.
	(propagate_necessity): Likewise.
	(eliminate_unnecessary_stmts): Likewise.
	* tree.c (build_common_builtin_nodes): Build
	BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX.
	* tree.h (ALLOCA_FUNCTION_CODE_P): New macro.
	(CASE_BUILT_IN_ALLOCA): Likewise.
	* varasm.c (incorporeal_function_p): Deal with all alloca variants.
c-family/
	* c-common.c (check_builtin_function_arguments): Also check arguments
	of __builtin_alloca_with_align_and_max.

From-SVN: r253901
2017-10-19 15:58:05 +00:00
Jakub Jelinek
d969783705 re PR c++/82600 (Address of local variable returned [-Werror=return-local-addr] when building mozilla-central)
PR c++/82600
	* typeck.c (check_return_expr): Don't call
	maybe_warn_about_returning_address_of_local in templates.

	* g++.dg/warn/Wreturn-local-addr-4.C: New test.

From-SVN: r253899
2017-10-19 16:24:39 +02:00
Jonathan Wakely
db62ad7c66 Improve tests for error reporting in Filesystem TS
* testsuite/experimental/filesystem/iterators/
	recursive_directory_iterator.cc: Ensure that error_code arguments are
	cleared when required.
	* testsuite/experimental/filesystem/operations/create_directory.cc:
	Remove redundant check.
	* testsuite/experimental/filesystem/operations/temp_directory_path.cc:
	Ensure that error_code argument is cleared when required.

From-SVN: r253897
2017-10-19 14:57:10 +01:00
Jonathan Wakely
551124d561 Fix path::iterator post-increment and post-decrement
* include/experimental/bits/fs_path.h (path::iterator++(int))
	(path::iterator--(int)): Fix for paths with only one component.
	* testsuite/experimental/filesystem/path/itr/traversal.cc: Test
	post-increment and post-decrement.

From-SVN: r253896
2017-10-19 14:57:06 +01:00
Jonathan Wakely
89b1e16136 Update references to C++17 in libstdc++ manual
* doc/xml/manual/status_cxx2017.xml: Update references to C++17
	section numbers.

From-SVN: r253895
2017-10-19 14:57:02 +01:00
Jonathan Wakely
af23b26ab0 Use __LONG_LONG_MAX__ instead of LONG_LONG_MAX in test
* testsuite/decimal/conversion-to-integral.cc: Use predefined macro
	instead of non-standard glibc one.

From-SVN: r253894
2017-10-19 14:56:55 +01:00
Eric Botcazou
426776f1b5 re PR debug/82509 (DW_AT_endianity issues with attribute scalar_storage_order)
PR debug/82509
	* dwarf2out.c (new_die_raw): New static inline function.
	(new_die): Use it to create the DIE.
	(add_AT_external_die_ref): Likewise.
	(clone_die): Likewise.
	(clone_as_declaration): Likewise.
	(dwarf2out_vms_debug_main_pointer): Likewise.
	(base_type_die): Likewise.  Remove early return for corner cases.
	Do not call add_pubtype on the DIE here.
	(is_base_type): Remove ERROR_MARK and return 0 for VOID_TYPE.
	(modified_type_die): Adjust the lookup for reverse order DIEs.  Skip
	typedefs for base types with DW_AT_endianity.  Make sure a DIE with
	native order exists for base types, attach the DIE manually and call
	add_pubtype on it.  Do not equate a reverse order DIE to the type.

From-SVN: r253893
2017-10-19 13:50:10 +00:00
Richard Earnshaw
3bb3d60b1e [ARM] PR 82445 - suppress 32-bit aligned ldrd/strd peepholing with -mno-unaligned-access
Peephole patterns exist in the arm backend to spot load/store
operations to adjacent memory operations in order to convert them into
ldrd/strd instructions.  However, when we have strict alignment
enforced, then we can only do this if the accesses are known to be
64-bit aligned; this is unlikely to be the case for most loads.  The
patch adds some alignment checking to the code that validates the
addresses for use in the peephole patterns.  This should also fix
incorrect generation of ldrd/strd with unaligned accesses that could
previously have occurred on ARMv5e where all such operations must be
64-bit aligned.

I've added some new tests as well.  In doing so I discovered that the
ldrd/strd peephole tests could never fail since they would match the
source file name in the scanned assembly as well as any instructions
of the intended type.  I've fixed those by tightening the scan results
slightly.

gcc:

* config/arm/arm.c (align_ok_ldrd_strd): New function.
(mem_ok_for_ldrd_strd): New parameter align.  Extract the alignment of the
mem into it.
(gen_operands_ldrd_strd): Validate the alignment of the accesses.

testsuite:

* gcc.target/arm/peep-ldrd-1.c: Tighten test scan pattern.
* gcc.target/arm/peep-strd-1.c: Likewise.
* gcc.target/arm/peep-ldrd-2.c: New test.
* gcc.target/arm/peep-strd-2.c: New test.

From-SVN: r253890
2017-10-19 13:10:42 +00:00
Jakub Jelinek
07d7c611fc flag-types.h (enum sanitize_code): Add SANITIZE_BUILTIN.
* flag-types.h (enum sanitize_code): Add SANITIZE_BUILTIN.  Or
	SANITIZE_BUILTIN into SANITIZE_UNDEFINED.
	* sanitizer.def (BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN,
	BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN_ABORT): New builtins.
	* opts.c (sanitizer_opts): Add builtin.
	* ubsan.c (instrument_builtin): New function.
	(pass_ubsan::execute): Call it.
	(pass_ubsan::gate): Enable even for SANITIZE_BUILTIN.
	* doc/invoke.texi: Document -fsanitize=builtin.

	* c-c++-common/ubsan/builtin-1.c: New test.

From-SVN: r253888
2017-10-19 14:09:52 +02:00
Jakub Jelinek
5d3805fca3 ubsan.c (ubsan_expand_null_ifn): Use _v1 suffixed type mismatch builtins...
* ubsan.c (ubsan_expand_null_ifn): Use _v1 suffixed type mismatch
	builtins, store max (log2 (align), 0) into uchar field instead of
	align into uptr field.
	(ubsan_expand_objsize_ifn): Use _v1 suffixed type mismatch builtins,
	store uchar 0 field instead of uptr 0 field.
	(instrument_nonnull_return): Use _v1 suffixed nonnull return builtin,
	instead of passing one address of struct with 2 locations pass
	two addresses of structs with 1 location each.
	* sanitizer.def (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH,
	BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_ABORT,
	BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN,
	BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_ABORT): Removed.
	(BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1,
	BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1_ABORT,
	BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1,
	BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1_ABORT): New builtins.

	* c-c++-common/ubsan/float-cast-overflow-1.c: Drop value keyword
	from expected output regexps.
	* c-c++-common/ubsan/float-cast-overflow-2.c: Likewise.
	* c-c++-common/ubsan/float-cast-overflow-3.c: Likewise.
	* c-c++-common/ubsan/float-cast-overflow-4.c: Likewise.
	* c-c++-common/ubsan/float-cast-overflow-5.c: Likewise.
	* c-c++-common/ubsan/float-cast-overflow-6.c: Likewise.
	* c-c++-common/ubsan/float-cast-overflow-8.c: Likewise.
	* c-c++-common/ubsan/float-cast-overflow-9.c: Likewise.
	* c-c++-common/ubsan/float-cast-overflow-10.c: Likewise.
	* g++.dg/ubsan/float-cast-overflow-bf.C: Likewise.
	* gcc.dg/ubsan/float-cast-overflow-bf.c: Likewise.
	* g++.dg/asan/default-options-1.C (__asan_default_options): Add
	used attribute.
	* g++.dg/asan/asan_test.C: Run with ASAN_OPTIONS=handle_segv=2
	in the environment.

	* All source files: Merge from upstream 315899.
        * asan/Makefile.am (nodist_saninclude_HEADERS): Add
	include/sanitizer/tsan_interface.h.
        * asan/libtool-version: Bump the libasan SONAME.
	* lsan/Makefile.am (sanitizer_lsan_files): Add lsan_common_mac.cc.
	(lsan_files): Add lsan_linux.cc, lsan_mac.cc and lsan_malloc_mac.cc.
        * sanitizer_common/Makefile.am (sanitizer_common_files): Add
	sancov_flags.cc, sanitizer_allocator_checks.cc,
	sanitizer_coverage_libcdep_new.cc, sanitizer_errno.cc,
	sanitizer_file.cc, sanitizer_mac_libcdep.cc and
	sanitizer_stoptheworld_mac.cc.  Remove sanitizer_coverage_libcdep.cc
	and sanitizer_coverage_mapping_libcdep.cc.
        * tsan/Makefile.am (tsan_files): Add tsan_external.cc.
	* ubsan/Makefile.am (DEFS): Add -DUBSAN_CAN_USE_CXXABI=1.
	(ubsan_files): Add ubsan_init_standalone.cc and
	ubsan_signals_standalone.cc.
	* ubsan/libtool-version: Bump the libubsan SONAME.
        * asan/Makefile.in: Regenerate.
        * lsan/Makefile.in: Regenerate.
        * sanitizer_common/Makefile.in: Regenerate.
        * tsan/Makefile.in: Regenerate.
	* ubsan/Makefile.in: Regenerate.

From-SVN: r253887
2017-10-19 13:23:59 +02:00
Martin Liska
93659712d9 Revert r238089 (PR driver/81829).
2017-10-19  Martin Liska  <mliska@suse.cz>

	PR driver/81829
	* file-find.c (remove_prefix): Remove.
	* file-find.h (remove_prefix): Likewise.
	* gcc-ar.c: Remove smartness of lookup.

From-SVN: r253886
2017-10-19 11:08:28 +00:00
Segher Boessenkool
d8198d1cd0 rs6000: Fix "missing mode" on UNSPEC_TOCSLOT
Currently gen* warn about a missing mode on an UNSPEC_TOCSLOT unspec in
some call patterns.  Those unspecs are created from rs6000.c, with Pmode
always.  This patch fixes the patterns to say :P as well.


	* config/rs6000/rs6000.md (*call_indirect_aix<mode>,
	*call_value_indirect_aix<mode>, *call_indirect_elfv2<mode>,
	*call_value_indirect_elfv2<mode>): Add correct mode to the unspec.

From-SVN: r253885
2017-10-19 12:55:51 +02:00
Jakub Jelinek
1855f81251 re PR target/82580 (Optimize comparisons for __int128 on x86-64)
PR target/82580
	* config/i386/i386.md (setcc + movzbl to xor + setcc): New peephole2.
	(setcc + and to xor + setcc): New peephole2.

	* gcc.target/i386/pr82580.c: Use {\msbb} instead of "sbb" in
	scan-assembler-times.  Check that there are no movzb* instructions
	if lp64.

From-SVN: r253884
2017-10-19 10:37:04 +02:00
Tom de Vries
8a78f1a1b6 Specify required stack size for gcc.dg/tree-ssa/ldist-27.c
2017-10-19  Tom de Vries  <tom@codesourcery.com>

	* gcc.dg/tree-ssa/ldist-27.c: Use dg-require-stack-size.

From-SVN: r253883
2017-10-19 08:24:26 +00:00
Tom de Vries
7ff6bdb727 Add dg-require-stack-size
2017-10-19  Tom de Vries  <tom@codesourcery.com>

	* lib/target-supports-dg.exp (dg-require-stack-size): New proc.
	* gcc.c-torture/execute/20030209-1.c: Use dg-require-stack-size.
	* gcc.c-torture/execute/20040805-1.c: Same.
	* gcc.c-torture/execute/920410-1.c: Same.
	* gcc.c-torture/execute/921113-1.c: Same.
	* gcc.c-torture/execute/921208-2.c: Same.
	* gcc.c-torture/execute/comp-goto-1.c: Same.
	* gcc.c-torture/execute/pr20621-1.c: Same.
	* gcc.c-torture/execute/pr28982b.c: Same.
	* gcc.dg/tree-prof/comp-goto-1.c: Same.

	* doc/sourcebuild.texi (Test Directives, Variants of
	dg-require-support): Add dg-require-stack-size.

From-SVN: r253882
2017-10-19 08:11:26 +00:00
Bernhard Reutner-Fischer
439d235025 Derive interface buffers from max name length
2017-10-19  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>

	* interface.c (check_sym_interfaces, check_uop_interfaces,
	gfc_check_interfaces): Base interface_name buffer off
	GFC_MAX_SYMBOL_LEN.

From-SVN: r253881
2017-10-19 09:55:43 +02:00
Aldy Hernandez
cf64af861f Update my last ChangeLog entry to properly specify overloaded functions.
From-SVN: r253880
2017-10-19 07:51:54 +00:00
Martin Liska
36208e6037 Do not instrument use-after-scope for vars with large alignment (PR sanitizer/82517).
2017-10-19  Martin Liska  <mliska@suse.cz>

	PR sanitizer/82517
	* gimplify.c (gimplify_decl_expr): Do not instrument variables
	that have a large alignment.
	(gimplify_target_expr): Likewise.
2017-10-19  Martin Liska  <mliska@suse.cz>

	PR sanitizer/82517
	* gcc.dg/asan/pr82517.c: New test.

From-SVN: r253879
2017-10-19 07:50:48 +00:00