Commit Graph

141812 Commits

Author SHA1 Message Date
Kyrylo Tkachov 7263fa9ff1 [AArch64] PR 68102: Check that operand is REG before checking the REGNO in mov-immediate splitters
PR target/68102
	* config/aarch64/aarch64.md (*movsi_aarch64): Check that
	operands[0] is a reg before taking its REGNO in split condition.
	(*movdi_aarch64): Likewise.

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

From-SVN: r229455
2015-10-27 18:32:37 +00:00
Kyrylo Tkachov 0d8e1702cf [AArch64] Handle vector float modes properly in aarch64_output_simd_mov_immediate
* config/aarch64/aarch64.c (aarch64_output_simd_mov_immediate):
	Handle floating point inner modes properly.

From-SVN: r229454
2015-10-27 18:30:55 +00:00
Paul Thomas b7ddd3f14f re PR fortran/67933 (ICE for array of a derived type with allocatable class in derived type object)
2015-01-27  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/67933
	* gfortran.dg/allocate_with_source_15.f03: New test

From-SVN: r229452
2015-10-27 18:03:18 +00:00
Thomas Schwinge 33497fd242 [PR fortran/63865] OpenACC cache directive: match Fortran support with C/C++
gcc/fortran/
	PR fortran/63865
	* openmp.c (resolve_oacc_cache): Remove function.
	(gfc_match_oacc_cache): Enable array sections.
	(resolve_omp_clauses, gfc_resolve_oacc_directive): Change
	accordingly.
	* trans-openmp.c (gfc_trans_omp_clauses): Likewise.
	gcc/testsuite/
	PR fortran/63865
	* gfortran.dg/goacc/coarray.f95: Expect the OpenACC cache
	directive to work.
	* gfortran.dg/goacc/loop-1.f95: Likewise.
	* gfortran.dg/goacc/cache-1.f95: Likewise, and extend testing.
	* gfortran.dg/goacc/cray.f95: Likewise.
	* gfortran.dg/goacc/parameter.f95: Likewise.

Co-Authored-By: James Norris <jnorris@codesourcery.com>

From-SVN: r229448
2015-10-27 17:54:52 +01:00
Alan Hayward d34b48146a 2015-10-27 Alan Hayward <alan.hayward@arm.com>
* tree-vect-looop.c
	(vectorizable_live_operation): Change iterator.

From-SVN: r229447
2015-10-27 16:43:13 +00:00
Steven G. Kargl 54b96a2d6a re PR fortran/68108 (erroneous error message 'scalar integer expression expected')
2015-10-27  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/68108
	* decl.c (char_len_param_value): Check for REF_ARRAY.
 
2015-10-27  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/68108
	* gfortran.dg/pr67805_2.f90: New test.

From-SVN: r229446
2015-10-27 16:42:24 +00:00
Abderrazek Zaafrani 5affe17f85 isl schedule tree
Use isl_schedule_node instead of isl_band_list for isl-0.15.
Passes regtest and bootstrap for isl-0.15 and isl-0.12.2 on x86_64-linux.

gcc/ChangeLog:

        * graphite-optimize-isl.c (get_schedule_for_node_st): New callback
          function to schedule based on isl_schedule_node.
        (get_schedule_map_st): New schedule optimizer based on isl_schedule_node.
        (scop_get_domains): New. Return the isl_union_set containing the domains of all the pbbs.
        (optimize_isl): Call the new function get_schedule_map_st for isl-0.15

gcc/testsuite/ChangeLog:

        * gcc.dg/graphite/block-0.c: Changed to match pattern.
        * gcc.dg/graphite/interchange-1.c: Same.
        * gcc.dg/graphite/interchange-10.c: Same.
        * gcc.dg/graphite/interchange-11.c: Same.
        * gcc.dg/graphite/interchange-13.c: Same.
        * gcc.dg/graphite/interchange-3.c: Same.
        * gcc.dg/graphite/interchange-4.c: Same.
        * gcc.dg/graphite/interchange-7.c: Same.
        * gcc.dg/graphite/interchange-9.c: Same.
        * gcc.dg/graphite/uns-interchange-9.c: Same.
        * gfortran.dg/graphite/interchange-3.f90: Same.

Co-Authored-By: Aditya Kumar <aditya.k7@samsung.com>

From-SVN: r229445
2015-10-27 15:58:05 +00:00
H.J. Lu 55015e590f Properly handle -fno-plt in ix86_expand_call
prepare_call_address in calls.c is the wrong place to handle -fno-plt.
We shoudn't force function address into register and hope that load
function address via GOT and indirect call via register will be folded
into indirect call via GOT, which doesn't always happen.  Also non-PIC
case can only be handled in backend.  Instead, backend should expand
external function call into indirect call via GOT for -fno-plt.

This patch reverts -fno-plt in prepare_call_address and handles it in
ix86_expand_call.  Other backends may need similar changes to support
-fno-plt.  Alternately, we can introduce a target hook to indicate
whether an external function should be called via register for -fno-plt
so that i386 backend can disable it in prepare_call_address.

gcc/

	PR target/67215
	* calls.c (prepare_call_address): Don't handle -fno-plt here.
	* config/i386/i386.c (ix86_expand_call): Generate indirect call
	via GOT for -fno-plt.  Support indirect call via GOT for x32.
	* config/i386/predicates.md (sibcall_memory_operand): Allow
	GOT memory operand.

gcc/testsuite/

	PR target/67215
	* gcc.target/i386/pr67215-1.c: New test.
	* gcc.target/i386/pr67215-2.c: Likewise.
	* gcc.target/i386/pr67215-3.c: Likewise.

From-SVN: r229444
2015-10-27 07:29:31 -07:00
Richard Biener 23a3722963 re PR tree-optimization/68104 (ice in vect_update_misalignment_for_peel with -O3)
2015-10-27  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/68104
	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Move
	strided access check ...
	(vect_compute_data_refs_alignment): ... here.

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

From-SVN: r229440
2015-10-27 13:48:15 +00:00
Daniel Jacobowitz 1e44e857e0 config.gcc: Handle --enable-fdpic.
gcc/ChangeLog
	* config.gcc: Handle --enable-fdpic.
	* config/sh/constraints.md (Ccl): New constraint.
	* config/sh/linux.h (SUBTARGET_LINK_EMUL_SUFFIX): Handle -mfdpic.
	* config/sh/sh-c.c (sh_cpu_cpp_builtins): Add __FDPIC__ and
	__SH_FDPIC__.
	* config/sh/sh-mem.cc (expand_block_move): Support FDPIC for calls to
	library functions.
	* config/sh/sh-protos.h (function_symbol_result): New struct.
	(function_symbol): Return function_symbol_result.
	(sh_get_fdpic_reg_initial_val, sh_load_function_descriptor): New
	declarations.
	* config/sh/sh.c (TARGET_ASM_INTEGER, sh_assemble_integer): Implement
	target hook.
	(TARGET_CANNOT_FORCE_CONST_MEM, sh_cannot_force_const_mem_p): Likewise.
	(sh_option_override): Force -fPIC if FDPIC is in effect.
	(sh_asm_output_addr_const_extra): Add UNSPEC_GOTFUNCDESC and
	UNSPEC_GOTOFFFUNCDESC cases.
	(prepare_move_operands): Use FDPIC initial GOT register for
	TLS-related GOT access; inhibit cross-section address offset constants
	for FDPIC.
	(sh_assemble_integer): New function.
	(sh_cannot_copy_insn_p): Inhibit copying insns that are FDPIC
	PC-relative call sites.
	(expand_ashiftrt): Adapt invocation of function_symbol.
	(sh_expand_prologue): Inhibit PC-relative GOT address load for FDPIC.
	(nonpic_symbol_mentioned_p): Add cases for UNSPEC_GOTFUNCDESC and
	UNSPEC_GOTOFFFUNCDESC.
	(legitimize_pic_address): Resolve function symbols to function
	descriptors for FDPIC.  Do not use GOT-relative addressing for local
	data that may be read-only on FDPIC.
	(sh_emit_storesi, sh_emit_storehi): New functions.
	(sh_trampoline_init): Generate FDPIC trampolines.
	(sh_function_ok_for_sibcall): Add TARGET_FDPIC check.
	(sh_expand_sym_label2reg): Don't assume sibcalls are local.
	(sh_output_mi_thunk): Generate FDPIC call.
	(function_symbol): Return function_symbol_result.  For SFUNC_STATIC on
	FDPIC, generate call site labels to use PC-relative addressing rather
	than GOT-relative addressing.
	(sh_conditional_register_usage): Make PIC register fixed and call used
	when FDPIC is in effect.
	(sh_legitimate_constant_p): Impose FDPIC constant constraints.
	(sh_cannot_force_const_mem_p, sh_load_function_descriptor,
	sh_get_fdpic_reg_initial_val): New functions.
	* config/sh/sh.h (SUBTARGET_ASM_SPEC, SUBTARGET_LINK_EMUL_SUFFIX):
	Handle -mfdpic.
	(FDPIC_SELF_SPECS, SUBTARGET_DRIVER_SELF_SPECS,
	PIC_OFFSET_TABLE_REG_CALL_CLOBBERED,
	SH_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macros.
	(DRIVER_SELF_SPECS): Add SUBTARGET_DRIVER_SELF_SPECS and
	FDPIC_SELF_SPECS.
	(TRAMPOLINE_SIZE): Select trampoline size for FDPIC.
	(ASM_PREFERRED_EH_DATA_FORMAT): Add EH format constraints for FDPIC.
	(ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Handle FDPIC case.
	* config/sh/sh.md (UNSPEC_GOTFUNCDESC, UNSPEC_GOTOFFFUNCDESC): New
	constants.
	(calli_fdpic, call_valuei_fdpic, sibcalli_fdpic, sibcalli_pcrel_fdpic,
	sibcall_pcrel_fdpic, sibcall_valuei_fdpic, sibcall_valuei_pcrel_fdpic,
	sibcall_value_pcrel_fdpic, sym2GOTFUNCDESC, symGOTFUNCDESC2reg,
	sym2GOTOFFFUNCDESC, symGOTOFFFUNCDESC2reg): New patterns.
	(udivsi3_i1, udivsi3_i4, udivsi3_i4_single, udivsi3,
	*divsi_inv_call_combine, divsi3_i4, divsi3_i4_single, divsi3, ashlsi3,
	ashlsi3_d_call, ashrsi3_n, lshrsi3, lshrsi3_d_call, calli, call_valuei,
	call, call_value, sibcalli, sibcalli_pcrel, sibcall_pcrel, sibcall,
	sibcall_valuei, sibcall_valuei_pcrel, sibcall_value_pcrel,
	sibcall_value, GOTaddr2picreg, symGOT_load, symGOTOFF2reg,
	block_move_real, block_lump_real, block_move_real_i4,
	block_lump_real_i4): Add support for FDPIC calls.
	(mulsi3, ic_invalidate_line, initialize_trampoline, call_pop,
	call_value_pop): Adjust for new function_symbol signature.
	* config/sh/sh.opt (-mfdpic): New option.
	* doc/install.texi (Options specification): Document --enable-fdpic.
	* doc/invoke.texi (SH Options): Document -mfdpic.

include/ChangeLog:
	* longlong.h (udiv_qrnnd): Add FDPIC compatible version for SH.

libitm/ChangeLog:
	* config/sh/sjlj.S (_ITM_beginTransaction): Bypass PLT calling
	GTM_begin_transaction for compatibility with FDPIC.

Co-Authored-By: Andrew Stubbs <ams@codesourcery.com>
Co-Authored-By: Joseph Myers <joseph@codesourcery.com>
Co-Authored-By: Mark Shinwell <shinwell@codesourcery.com>
Co-Authored-By: Rich Felker <dalias@libc.org>

From-SVN: r229438
2015-10-27 13:36:47 +00:00
Alan Lawrence 6f90716562 tree-scalar-evolution.c: Handle LSHIFT by constant
gcc/:

	tree-scalar-evolution.c (interpret_rhs_expr): Handle some LSHIFT_EXPRs
	as equivalent MULT_EXPRs.

gcc/testsuite/:

	gcc.dg/vect/vect-strided-shift.c: New.

From-SVN: r229437
2015-10-27 12:36:55 +00:00
Kyrylo Tkachov 85f5231d73 [ARM] PR target/67929 Tighten vfp3_const_double_for_bits checks
PR target/67929
	* config/arm/arm.c (vfp3_const_double_for_bits): Rewrite.
	* config/arm/constraints.md (Dp): Update callsite.
	* config/arm/predicates.md (const_double_vcvt_power_of_two): Likewise.

	* gcc.target/arm/pr67929_1.c: New test.

From-SVN: r229436
2015-10-27 12:23:51 +00:00
Richard Sandiford 86c0733fed Move ldexp, scalbn and scalbln folds to match.pd
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
	* builtins.c (fold_builtin_load_exponent): Rename to...
	(fold_const_builtin_load_exponent): ...this and only handle
	constant arguments.
	(fold_builtin_2): Update accordingly.
	* match.pd: Add rules previously handled by fold_builtin_load_exponent.

gcc/testsuite/
	* gcc.dg/torture/builtin-ldexp-1.c: Skip at -O9,

From-SVN: r229434
2015-10-27 12:00:34 +00:00
Richard Sandiford 83668c858e Rename logb and significand folds
fold_builtin_logb and fold_builtin_significand now only handle
constant arguments, so this patch renames them to fold_const...,
to match fold_const_builtin_pow.  The idea is to differentiate
constant-only folds so that they can be moved to a const_binop-like
function in future.

The functions also had some unnecessary calls to STRIP_NOPS, which
I think are left over from code that has already moved to match.pd.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
	* builtins.c (fold_builtin_logb): Rename to...
	(fold_const_builtin_logb): ...this and remove STRIP_NOPS call.
	(fold_builtin_significand): Rename to...
	(fold_const_builtin_significand): ...this and remove STRIP_NOPS call.
	(fold_builtin_1): Update accordingly.

From-SVN: r229433
2015-10-27 11:59:21 +00:00
Richard Sandiford 0122e8e521 Move fmin and fmax folds to match.pd
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
	* builtins.c (fold_builtin_fmin_fmax): Delete.
	(fold_builtin_2): Handle constant fmin and fmax arguments here.
	* match.pd: Add rules previously handled by fold_builtin_fmin_fmax.

From-SVN: r229432
2015-10-27 11:57:34 +00:00
Evandro Menezes 783879e617 [PATCH] [AArch64] Distinct costs for sign and zero extension
gcc/

	* config/aarch64/aarch64-protos.h (cpu_addrcost_table): Split member
	for register extension into sign and zero register extension.
	* config/aarch64/aarch64.c (generic_addrcost_table): Infer values
	for sign and zero register extension.
	(cortexa57_addrcost_table): Likewise.
	(xgene1_addrcost_table): Likewise.

From-SVN: r229431
2015-10-27 11:57:01 +00:00
Richard Sandiford 4a334cbaf8 Move min(max...) and max(min...) folds to match.pd
This handles both integer and floating-point arguments.  It's needed
for the follow-on patch to move fmin and fmax to match.pd.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
	* fold-const.c (fold_minmax): Delete.
	(fold_binary_loc): Don't call it.
	* match.pd: Add rules previously handled by fold_minmax.

From-SVN: r229430
2015-10-27 11:56:18 +00:00
Arnaud Charlet 2f97d24cad [multiple changes]
2015-10-27  Tristan Gingold  <gingold@adacore.com>

	* bindgen.adb (System_BB_CPU_Primitives_Multiprocessors_Used):
	New variable.
	(Gen_Adainit): Call Start_All_CPUs if the above
	variable is set to true.

2015-10-27  Emmanuel Briot  <briot@adacore.com>

	* adaint.c, s-os_lib.adb, s-os_lib.ads (Copy_File_Attributes): New
	subprogram.

From-SVN: r229429
2015-10-27 12:56:12 +01:00
Richard Sandiford 4e48e02be8 Split constant handling out of fold_builtin_fma
Just makes an upcoming patch a bit clearer.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
	* builtins.c (fold_builtin_fma): Remove constant handling.
	(fold_builtin_3): Handle constant fma arguments here.

From-SVN: r229428
2015-10-27 11:55:38 +00:00
Richard Sandiford efc8f0d8d1 Remove constant handling from fold_builtin_{,f}abs
fold_builtin_fabs and fold_builtin_abs had code to handle constant
arguments, but this simply duplicated what the following fold_build1_loc
would do for ABS_EXPR.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
	* builtins.c (fold_builtin_fabs): Remove constant handling.
	(fold_builtin_abs): Likewise.

From-SVN: r229427
2015-10-27 11:54:51 +00:00
Hristian Kirtchev cd8d6792e3 namet.adb, namet.ads: Minor reformatting.
2015-10-27  Hristian Kirtchev  <kirtchev@adacore.com>

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

From-SVN: r229426
2015-10-27 12:54:29 +01:00
Richard Sandiford 461e414589 Move copysign folds to match.pd
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
	* builtins.c (fold_builtin_copysign): Delete.
	(fold_builtin_2): Handle constant copysign arguments here.
	* match.pd: Add rules previously handled by fold_builtin_copysign.

From-SVN: r229425
2015-10-27 11:53:45 +00:00
Arnaud Charlet 7f54dc8348 [multiple changes]
2015-10-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Allocator): Do not perform legality check
	on allocators for limited objects in a qualified expression,
	because expression has not been resolved.
	* sem_res.adb (Resolve_Allocator): Perform check on legality of
	limited objects after resolution.  Add sem_ch3.adb to context.

2015-10-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Refined_Global_In_Decl_Part): Add variable
	States.
	(Check_Refined_Global_Item): An object or state acts as a
	constituent only when the corresponding encapsulating state
	appears in pragma Global.
	(Collect_Global_Item): Add a state with non-null visible refinement to
	list States.

2015-10-27  Gary Dismukes  <dismukes@adacore.com>

	* sem_util.ads, par.adb, sem_ch6.adb: Minor reformatting and a few
	typo corrections.

2015-10-27  Pierre-Marie de Rodat  <derodat@adacore.com>

	* namet.ads, namet.adb (Name_Equals): New function.
	* namet.h (Name_Equals): New macro.

2015-10-27  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch6.adb (Build_Procedure_Form): Use 'RESULT' for the extra
	parameter, to avoid ambiguity when generating tmps using _xxx which
	might end up reusing _result.

From-SVN: r229424
2015-10-27 12:53:08 +01:00
Richard Sandiford 7317ef4ae5 Move signbit folds to match.pd
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
	* builtins.c (fold_builtin_signbit): Delete.
	(fold_builtin_2): Handle constant signbit arguments here.
	* match.pd: Add rules previously handled by fold_builtin_signbit.

gcc/testsuite/
	PR tree-optimization/68097
	* gcc.dg/torture/builtin-nonneg-1.c: Skip at -O0.  Add
	--param max-ssa-name-query-depth=3 to dg-options.

From-SVN: r229423
2015-10-27 11:52:54 +00:00
Richard Sandiford c53233c660 Fold comparisons between sqrt and zero
The expression:

      signbit(sqrt(x))

is always 0 for -ffast-math.  The signbit fold first converts it to:

      sqrt(x) < 0

and whether we realise that this is false depends on a race between two
folders: the sqrt comparison folder, which wants to convert it to

      x < 0*0

and the generic tree_expr_nonnegative_p rule for ... < 0, which would
give the hoped-for 0.

The sqrt code already handles comparisons with negative values specially,
so this patch simply extends that idea to comparisons with zero.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
	* match.pd: Handle sqrt(x) cmp 0 specially.

gcc/testsuite/
	* gcc.dg/torture/builtin-sqrt-cmp-1.c: New test.

From-SVN: r229422
2015-10-27 11:51:43 +00:00
Arnaud Charlet 3f8c04e73c [multiple changes]
2015-10-27  Javier Miranda  <miranda@adacore.com>

	* sem_util.ads, sem_util.adb (Defining_Identifier): Adding a formal to
	indicate the needed behavior in case of nodes with errors.

2015-10-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Eval_Attribute): If the prefix of attribute
	Enum_Rep is an object that is a generated loop variable for an
	element iterator, no folding is possible.
	* sem_res.adb (Resolve_Entity_Name): Do not check for a missing
	initialization in the case of a constant that is an object
	renaming.
	* exp_attr.adb (Expand_N_Attribute_Reference, case Enum_Rep):
	If the prefix is a constant that renames an expression there is
	nothing to evaluate statically.

2015-10-27  Vincent Celier  <celier@adacore.com>

	* gnatlink.adb: Always delete the response file, even when the
	invocation of gcc to link failed.

2015-10-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper):
	Do not inherit the SPARK_Mode from the context if it has been
	set already.
	(Build_Subprogram_Declaration): Relocate relevant
	pragmas from the subprogram body to the generated corresponding
	spec. Do not copy aspect SPARK_Mode as this leads to circularity
	in Copy_Separate_Tree. Inherit the attributes that describe
	pragmas Ghost and SPARK_Mode.
	(Move_Pragmas): New routine.

From-SVN: r229421
2015-10-27 12:50:29 +01:00
Hristian Kirtchev 2bfad6eb41 inline.adb (Is_Expression_Function): Removed.
2015-10-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* inline.adb (Is_Expression_Function): Removed.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): An internally
	generated subprogram body that completes an expression function
	inherits the SPARK_Mode from the spec.
	* sem_res.adb (Resolve_Call): Update all calls to
	Is_Expression_Function.
	* sem_util.ads, sem_util.adb (Is_Expression_Function): Reimplemented.
	(Is_Expression_Function_Or_Completion): New routine.

From-SVN: r229420
2015-10-27 12:46:38 +01:00
Hristian Kirtchev cdabbb5265 lib-xref-spark_specific.adb, [...]: Minor reformatting.
2015-10-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* lib-xref-spark_specific.adb, a-dirval-mingw.adb, exp_ch6.adb,
	sem_ch8.adb, s-os_lib.adb: Minor reformatting.

From-SVN: r229419
2015-10-27 12:23:07 +01:00
Arnaud Charlet f6f401140a [multiple changes]
2015-10-27  Yannick Moy  <moy@adacore.com>

	* lib-xref-spark_specific.adb
	(Enclosing_Subprogram_Or_Library_Package): detect library-level
	subprograms and handle entries as subprograms, i.e. now both
	library-level subprograms and entry bodies act as enclosing
	scopes.
	(Traverse_Declarations_Or_Statements): process entry bodies just
	like subprogram bodies.
	* lib-xref.ads (Enclosing_Subprogram_Or_Library_Package): comment
	simplified while keeping its the meaning and minor typo fixed
	("of" -> "or").
	* spark_xrefs.ads (Xref Section): fix in description of the ALI
	line for subprogram calls; such lines start with captial "F"
	followed by a space.

2015-10-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Direct_Name): A parameter association is
	a legal context for applying an implicit dereference.
	(Analyze_Expanded_Name): Minor code cleanup.

From-SVN: r229418
2015-10-27 12:21:23 +01:00
Arnaud Charlet 3f8743e802 sinput.ads, [...]: Fix typos.
2015-10-27  Arnaud Charlet  <charlet@adacore.com>

	* sinput.ads, spark_xrefs.ads, lib-xref.adb: Fix typos.

From-SVN: r229417
2015-10-27 12:20:01 +01:00
Arnaud Charlet 5c12e9fbef [multiple changes]
2015-10-27  Pascal Obry  <obry@adacore.com>

	* a-dirval-mingw.adb: Remove some characters from Invalid_Character set.

2015-10-27  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Rewrite_Function_Call_For_C): Use a named
	associaion for the added actual in the call because previous
	actuals may also have been given by explicit associations.
	* lib-xref.adb: Minor style fixes.

From-SVN: r229416
2015-10-27 12:15:27 +01:00
Arnaud Charlet b3010f3667 [multiple changes]
2015-10-27  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb: Remove hard coded restrictions.

2015-10-27  Pascal Obry  <obry@adacore.com>

	* a-dirval-mingw.adb: Minor reformatting.

From-SVN: r229415
2015-10-27 12:13:20 +01:00
Arnaud Charlet a1e1820b83 [multiple changes]
2015-10-27  Javier Miranda  <miranda@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Improve previous patch.

2015-10-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.adb (Analyze_Formal_Package_Declaration): Code cleanup. Set
	and restore the value of global flag Ignore_Pragma_SPARK_Mode. A
	formal package declaration acts as a package instantation with
	respect to SPARK_Mode legality.

2015-10-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Check_Constituent_Usage): Use
	logical operators rather than short circuit operators. Emit an
	error when a state with visible refinement is not refined.
	* snames.ads-tmpl: Add names for detecting
	predefined potentially blocking subprograms.

2015-10-27  Arnaud Charlet  <charlet@adacore.com>

	* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Revert previous
	change.
	(Expand_Array_Aggregate): Rewrite previous change here
	as done for other non GCC back-ends.
	(Build_Record_Aggr_Code): Add special case.

From-SVN: r229414
2015-10-27 12:12:14 +01:00
Ilya Enkovich cbf3bf3292 tree-vect-generic.c (expand_vector_operations_1): Check optab type before using it.
gcc/

	* tree-vect-generic.c (expand_vector_operations_1): Check
	optab type before using it.

From-SVN: r229413
2015-10-27 11:08:16 +00:00
Kyrylo Tkachov 2d6bc7fa9e [AArch64] Enable autoprefetcher modelling in the scheduler
* config/aarch64/aarch64-protos.h
	(struct tune_params): Add autoprefetcher_model field.
	* config/aarch64/aarch64.c: Include params.h
	(generic_tunings): Specify autoprefetcher_model value.
	(cortexa53_tunings): Likewise.
	(cortexa57_tunings): Likewise.
	(cortexa72_tunings): Likewise.
	(thunderx_tunings): Likewise.
	(xgene1_tunings): Likewise.
	(aarch64_first_cycle_multipass_dfa_lookahead_guard): New function.
	(TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD): Define.
	(aarch64_override_options_internal): Set
	PARAM_SCHED_AUTOPREF_QUEUE_DEPTH param.

From-SVN: r229412
2015-10-27 10:57:32 +00:00
Thomas Schwinge b3962a4a87 [PR testsuite/68063] Add missing private clause in libgomp.c++/member-1.C
PR testsuite/68063
	* testsuite/libgomp.c++/member-1.C (A::m1): Add missing private clause.

From-SVN: r229411
2015-10-27 11:32:32 +01:00
Richard Sandiford 8acda9b2c0 Move expN folds to match.pd
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
	* builtins.c (fold_builtin_exponent): Delete.
	(fold_builtin_2): Handle constant expN arguments here.
	* match.pd: Fold expN(logN(x)) -> x.

From-SVN: r229410
2015-10-27 09:32:11 +00:00
Richard Sandiford 5ddc84ca83 Move powi folds to match.pd
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
	* builtins.c (fold_builtin_powi): Delete.
	(fold_builtin_2): Handle constant powi arguments here.
	* match.pd: Add rules previously handled by fold_builtin_powi.

gcc/testsuite/
	* gcc.dg/builtins-52.c: Add -O to dg-options.

From-SVN: r229409
2015-10-27 09:31:28 +00:00
Richard Sandiford b4838d7701 Move pow folds to match.pd
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
	* builtins.c (fold_builtin_pow): Delete in favor of...
	(fold_const_builtin_pow): ...this new function.  Only handle constant
	arguments.
	(fold_builtin_2): Update accordingly.
	* match.pd: Add rules previously handled by fold_builtin_pow.

gcc/testsuite/
	* gcc.dg/torture/builtin-math-1.c: Skip at -O0.

From-SVN: r229408
2015-10-27 09:30:32 +00:00
Richard Sandiford 4d7836c436 Move hypot folds to match.pd
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
	* builtins.c (fold_builtin_hypot): Delete.
	(fold_builtin_2): Handle constant hypot arguments here.
	* match.pd: Fold hypot(x, 0) and hypot(0, x) to x.  Canonicalize
	hypot(x, x) to fabs(x)*sqrt(2).

From-SVN: r229407
2015-10-27 09:29:40 +00:00
Richard Sandiford 4aecfe1986 Don't create SSA names until in SSA form
An upcoming patch adds a fold from hypot(x,x) to fabs(x)*sqrt(2).
This is unusual in that it could trigger in the gimplifier but would
require new SSA names to be created.  This patch makes sure that we
use the usual:

	  if (gimple_in_ssa_p (cfun))
	    res = make_ssa_name (type);
	  else
	    res = create_tmp_reg (type);

formula to cope with cases where we're not yet in SSA form.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
	* gimple-match-head.c (maybe_push_res_to_seq): Use create_tmp_reg
	instead of make_ssa_name if not yet in SSA form.

From-SVN: r229406
2015-10-27 09:07:44 +00:00
Richard Biener 61183076f1 cfg.c (free_edge): Add function argument and use it instead of cfun.
2015-10-27  Richard Biener  <rguenther@suse.de>

	* cfg.c (free_edge): Add function argument and use it instead of cfun.
	(clear_edges): Likewise.
	* cfg.h (clear_edges): Adjust prototype.
	* cfgexpand.c (pass_expand::execute): Adjust.
	* cfgloop.c (release_recorded_exits): Add function argument and use
	it instead of cfun.
	* cfgloop.h (release_recorded_exits): Adjust prototype.
	(loops_state_satisfies_p): Add overload with function argument.
	(loops_state_set): Likewise.
	(loops_state_clear): Likewise.
	(struct loop_iterator): Add function argument to constructor
	and iterator and use it instead of cfun.
	(FOR_EACH_LOOP_FN): New macro.
	(loop_optimizer_finalize): Add overload with function argument.
	* loop-init.c (loop_optimizer_init): Adjust.
	(fix_loop_structure): Likewise.
	(loop_optimizer_finaliz): Add function argument and use it
	instead of cfun.
	* tree-cfg.c (delete_tree_cfg_annotations): Likewise.
	* tree-cfg.h (delete_tree_cfg_annotations): Adjust prototype.
	* cgraph.c (release_function_body): Do not push/pop cfun.
	* final.c (rest_of_clean_state): Adjust.
	* graphite.c (graphite_finalize): Likewise.
	* tree-ssa-copy.c (fini_copy_prop): Likewise.
	* tree-ssa-dce.c (perform_tree_ssa_dce): Likewise.
	* tree-ssa-loop-ivcanon.c (canonicalize_induction_variables): Likewise.
	(tree_unroll_loops_completely): Likewise.
	(pass_complete_unrolli::execute): Likewise.
	* tree-ssa-loop-niter.c (free_numbers_of_iterations_estimates):
	Add function argument and use it instead of cfun.
	* tree-ssa-loop-niter.h (free_numbers_of_iterations_estimates):
	Adjust prototype.
	* tree-ssa-loop.c (tree_ssa_loop_done): Adjust.
	* tree-ssa.c (delete_tree_ssa): Add function argument and use it
	instead of cfun.
	* tree-ssa.h (delete_tree_ssa): Adjust prototype.
	* tree-ssanames.c (fini_ssanames): Add function argument and use it
	instead of cfun.
	* tree-ssanames.c (fini_ssanames): Adjust prototype.
	* tree-vrp.c (execute_vrp): Adjust.
	* value-prof.c (free_histograms): Add function argument and use it
	instead of cfun.
	* value-prof.h (free_histograms): Adjust prototype.

From-SVN: r229405
2015-10-27 08:56:03 +00:00
Thomas Schwinge 88bae6f494 [PR c/64765, c/64880] Support OpenACC Combined Directives in C, C++
gcc/c-family/
	PR c/64765
	PR c/64880
	* c-common.h (c_oacc_split_loop_clauses): Declare function.
	* c-omp.c (c_oacc_split_loop_clauses): New function.
	gcc/c/
	PR c/64765
	PR c/64880
	* c-parser.c (c_parser_oacc_loop): Add mask, cclauses formal
	parameters, and handle these.  Adjust all users.
	(c_parser_oacc_kernels, c_parser_oacc_parallel): Merge functions
	into...
	(c_parser_oacc_kernels_parallel): ... this new function.  Adjust
	all users.
	* c-tree.h (c_finish_oacc_parallel, c_finish_oacc_kernels): Don't
	declare functions.
	(c_finish_omp_construct): Declare function.
	* c-typeck.c (c_finish_oacc_parallel, c_finish_oacc_kernels):
	Merge functions into...
	(c_finish_omp_construct): ... this new function.
	gcc/cp/
	PR c/64765
	PR c/64880
	* cp-tree.h (finish_oacc_kernels, finish_oacc_parallel): Don't
	declare functions.
	(finish_omp_construct): Declare function.
	* parser.c (cp_parser_oacc_loop): Add p_name, mask, cclauses
	formal parameters, and handle these.  Adjust all users.
	(cp_parser_oacc_kernels, cp_parser_oacc_parallel): Merge functions
	into...
	(cp_parser_oacc_kernels_parallel): ... this new function.  Adjust
	all users.
	* semantics.c (finish_oacc_kernels, finish_oacc_parallel): Merge functions into...
	(finish_omp_construct): ... this new function.
	gcc/
	* tree.h (OACC_PARALLEL_BODY, OACC_PARALLEL_CLAUSES)
	(OACC_KERNELS_BODY, OACC_KERNELS_CLAUSES, OACC_KERNELS_COMBINED)
	(OACC_PARALLEL_COMBINED): Don't define macros.  Adjust all users.
	gcc/testsuite/
	PR c/64765
	PR c/64880
	* c-c++-common/goacc/loop-1.c: Don't skip for C++.  Don't prune
	sorry message.
	(PR64765): New function.
	* gfortran.dg/goacc/coarray_2.f90: XFAIL.
	* gfortran.dg/goacc/combined_loop.f90: Extend.  Don't prune
	sorry message.
	* gfortran.dg/goacc/cray.f95: Refine prune directive.
	* gfortran.dg/goacc/parameter.f95: Likewise.
	libgomp/
	* testsuite/libgomp.oacc-c-c++-common/combdir-1.c: New file.
	* testsuite/libgomp.oacc-fortran/combdir-1.f90: Likewise.

From-SVN: r229404
2015-10-27 09:39:15 +01:00
Tom de Vries 5acdb61b69 Add var in push_fields_onto_fieldstack
2015-10-27  Tom de Vries  <tom@codesourcery.com>

	* tree-ssa-structalias.c (push_fields_onto_fieldstack): Add and use var
	field_type.

From-SVN: r229403
2015-10-27 07:09:58 +00:00
Bin Cheng 5b92e1895e loop-invariant.c (struct def): New field can_prop_to_addr_uses.
* loop-invariant.c (struct def): New field can_prop_to_addr_uses.
	(inv_can_prop_to_addr_use): New function.
	(record_use): Call can_prop_to_addr_uses, set the new field.
	(get_inv_cost): Count cost if inv can't be propagated into its
	address uses.

From-SVN: r229402
2015-10-27 05:26:27 +00:00
John David Anglin bda9c2451e re PR libffi/65441 (FAIL: libffi.call/float2.c -W -Wall -Wno-psabi (test for excess errors))
PR libffi/65441
	* testsuite/lib/libffi.exp: Load target-supports-dg.exp.
	* testsuite/libffi.call/float2.c: Don't run on hppa*-*-hpux*.

From-SVN: r229400
2015-10-27 00:39:32 +00:00
GCC Administrator f3e7688d8e Daily bump.
From-SVN: r229399
2015-10-27 00:16:12 +00:00
Jason Merrill 6337bd75e2 DR 2179
DR 2179
	* pt.c (process_partial_specialization): Handle error_mark_node
	from most_specialized_partial_spec.

From-SVN: r229395
2015-10-26 17:17:50 -04:00
Doug Evans 59010ede55 * config/linux.h (INCLUDE_DEFAULTS): Add INCLUDE_DEFAULTS_MUSL_LOCAL.
From-SVN: r229392
2015-10-26 20:07:43 +00:00
Louis Krupp 388902dab9 re PR fortran/66056 (ICEs and endless compilation for lonely labels/numbers in type)
2015-10-26  Louis Krupp  <louis.krupp@zoho.com>

	PR fortran/66056
	* fortran.h: Include namespace pointer in statement label
	structure.
	* symbol.c (gfc_get_st_label): Store pointer to namespace
	that owns the statement label tree in each label.
	(gfc_free_st_label): Use namespace owning statement label
	tree when deleting statement label.
	* io.c: Initialize format_asterisk with NULL namespace pointer.

2015-10-26  Louis Krupp  <louis.krupp@zoho.com>

	PR fortran/66056
	* gfortran.dg/empty_label_typedecl.f90: New test

From-SVN: r229390
2015-10-26 19:18:08 +00:00