1. 27 Oct, 2015 40 commits
    • isl schedule tree · 5affe17f
      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
      Abderrazek Zaafrani committed
    • Properly handle -fno-plt in ix86_expand_call · 55015e59
      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
      H.J. Lu committed
    • re PR tree-optimization/68104 (ice in vect_update_misalignment_for_peel with -O3) · 23a37229
      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
      Richard Biener committed
    • config.gcc: Handle --enable-fdpic. · 1e44e857
      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
      Daniel Jacobowitz committed
    • tree-scalar-evolution.c: Handle LSHIFT by constant · 6f907165
      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
      Alan Lawrence committed
    • [ARM] PR target/67929 Tighten vfp3_const_double_for_bits checks · 85f5231d
      	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
      Kyrylo Tkachov committed
    • Move ldexp, scalbn and scalbln folds to match.pd · 86c0733f
      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
      Richard Sandiford committed
    • Rename logb and significand folds · 83668c85
      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
      Richard Sandiford committed
    • Move fmin and fmax folds to match.pd · 0122e8e5
      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
      Richard Sandiford committed
    • [PATCH] [AArch64] Distinct costs for sign and zero extension · 783879e6
      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
      Evandro Menezes committed
    • Move min(max...) and max(min...) folds to match.pd · 4a334cba
      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
      Richard Sandiford committed
    • [multiple changes] · 2f97d24c
      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
      Arnaud Charlet committed
    • Split constant handling out of fold_builtin_fma · 4e48e02b
      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
      Richard Sandiford committed
    • Remove constant handling from fold_builtin_{,f}abs · efc8f0d8
      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
      Richard Sandiford committed
    • namet.adb, namet.ads: Minor reformatting. · cd8d6792
      2015-10-27  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* namet.adb, namet.ads: Minor reformatting.
      
      From-SVN: r229426
      Hristian Kirtchev committed
    • Move copysign folds to match.pd · 461e4145
      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
      Richard Sandiford committed
    • [multiple changes] · 7f54dc83
      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
      Arnaud Charlet committed
    • Move signbit folds to match.pd · 7317ef4a
      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
      Richard Sandiford committed
    • Fold comparisons between sqrt and zero · c53233c6
      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
      Richard Sandiford committed
    • [multiple changes] · 3f8c04e7
      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
      Arnaud Charlet committed
    • inline.adb (Is_Expression_Function): Removed. · 2bfad6eb
      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
      Hristian Kirtchev committed
    • lib-xref-spark_specific.adb, [...]: Minor reformatting. · cdabbb52
      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
      Hristian Kirtchev committed
    • [multiple changes] · f6f40114
      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
      Arnaud Charlet committed
    • sinput.ads, [...]: Fix typos. · 3f8743e8
      2015-10-27  Arnaud Charlet  <charlet@adacore.com>
      
      	* sinput.ads, spark_xrefs.ads, lib-xref.adb: Fix typos.
      
      From-SVN: r229417
      Arnaud Charlet committed
    • [multiple changes] · 5c12e9fb
      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
      Arnaud Charlet committed
    • [multiple changes] · b3010f36
      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
      Arnaud Charlet committed
    • [multiple changes] · a1e1820b
      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
      Arnaud Charlet committed
    • tree-vect-generic.c (expand_vector_operations_1): Check optab type before using it. · cbf3bf32
      gcc/
      
      	* tree-vect-generic.c (expand_vector_operations_1): Check
      	optab type before using it.
      
      From-SVN: r229413
      Ilya Enkovich committed
    • [AArch64] Enable autoprefetcher modelling in the scheduler · 2d6bc7fa
      	* 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
      Kyrylo Tkachov committed
    • [PR testsuite/68063] Add missing private clause in libgomp.c++/member-1.C · b3962a4a
      	PR testsuite/68063
      	* testsuite/libgomp.c++/member-1.C (A::m1): Add missing private clause.
      
      From-SVN: r229411
      Thomas Schwinge committed
    • Move expN folds to match.pd · 8acda9b2
      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
      Richard Sandiford committed
    • Move powi folds to match.pd · 5ddc84ca
      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
      Richard Sandiford committed
    • Move pow folds to match.pd · b4838d77
      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
      Richard Sandiford committed
    • Move hypot folds to match.pd · 4d7836c4
      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
      Richard Sandiford committed
    • Don't create SSA names until in SSA form · 4aecfe19
      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
      Richard Sandiford committed
    • cfg.c (free_edge): Add function argument and use it instead of cfun. · 61183076
      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
      Richard Biener committed
    • [PR c/64765, c/64880] Support OpenACC Combined Directives in C, C++ · 88bae6f4
      	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
      Thomas Schwinge committed
    • Add var in push_fields_onto_fieldstack · 5acdb61b
      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
      Tom de Vries committed
    • loop-invariant.c (struct def): New field can_prop_to_addr_uses. · 5b92e189
      
      	* 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
      Bin Cheng committed
    • re PR libffi/65441 (FAIL: libffi.call/float2.c -W -Wall -Wno-psabi (test for excess errors)) · bda9c245
      	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
      John David Anglin committed