aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2015-09-29add separate insn sched class for vector LDP & STPEvandro Menezes5-6/+30
2015-09-29 Evandro Menezes <e.menezes@samsung.com> * config/arm/types.md (neon_ldp, neon_ldp_q, neon_stp, neon_stp_q): Add new insn types for vector load and store pairs. * config/arm/cortex-a53.md (cortex_a53_f_load_2reg): Add insn types "neon_ldp{,_q}". * config/arm/cortex-a57.md (neon_load_c): Add insn types "neon_ldp{,_q}". (neon_store_complex): Add insn types "neon_stp{,_q}". * config/aarch64/aarch64-simd.md (aarch64_be_movoi): Add insn types "neon_{ldp,stp}_q". From-SVN: r228253
2015-09-29[PATCH] Fix undefined behaviour in rl78 portJeff Law2-1/+4
[PATCH] Fix undefined behaviour in rl78 port * config/rl78/rl78-expand.md (movqi): Fix undefined left shift behaviour. From-SVN: r228252
2015-09-29[PATCH] Fix undefined behaviour in msp430 portJeff Law3-3/+10
* config/msp430/msp430.c (msp430_legitimate_constant): Fix undefined left shift behaviour. * config/msp430/constraints.md ('L' constraint): Similarly. ('Ys' constraint): Similarly. From-SVN: r228251
2015-09-29re PR fortran/67170 (PRE can't hoist out a readonly argument)Richard Biener6-18/+119
2015-09-29 Richard Biener <rguenther@suse.de> PR tree-optimization/67170 * tree-ssa-alias.h (get_continuation_for_phi): Adjust the translate function pointer parameter to get the bool whether to disambiguate only by reference. (walk_non_aliased_vuses): Likewise. * tree-ssa-alias.c (maybe_skip_until): Adjust. (get_continuation_for_phi_1): Likewise. (get_continuation_for_phi): Likewise. (walk_non_aliased_vuses): Likewise. * tree-ssa-sccvn.c (const_parms): New bitmap. (vn_reference_lookup_3): Adjust for interface change. Disambiguate parameters pointing to readonly memory. (free_scc_vn): Free const_parms. (run_scc_vn): Initialize const_parms from a fn spec attribute. * gfortran.dg/pr67170.f90: New testcase. From-SVN: r228244
2015-09-29re PR tree-optimization/67741 (Invalid built-in usage should not cause ↵Richard Biener4-4/+27
segmentation fault in compiler) 2015-09-29 Richard Biener <rguenther@suse.de> PR tree-optimization/67741 * tree-ssa-math-opts.c (pass_cse_sincos::execute): Only recognize builtin calls with correct signature. * gcc.dg/torture/pr67741.c: New testcase. From-SVN: r228243
2015-09-29tg-tests.h (foo_1): Also check if f and ld are non-zero for ↵Uros Bizjak2-4/+9
__builtin_signbit tests. * gcc.dg/tg-tests.h (foo_1) [UNSAFE]: Also check if f and ld are non-zero for __builtin_signbit tests. From-SVN: r228240
2015-09-29re PR target/65105 ([i386] XMM registers are not used for 64bit computations ↵Ilya Enkovich11-20/+1199
on 32bit target) gcc/ PR target/65105 * config/i386/i386.c: Include dbgcnt.h. (has_non_address_hard_reg): New. (convertible_comparison_p): New. (scalar_to_vector_candidate_p): New. (remove_non_convertible_regs): New. (scalar_chain): New. (scalar_chain::scalar_chain): New. (scalar_chain::~scalar_chain): New. (scalar_chain::add_to_queue): New. (scalar_chain::mark_dual_mode_def): New. (scalar_chain::analyze_register_chain): New. (scalar_chain::add_insn): New. (scalar_chain::build): New. (scalar_chain::compute_convert_gain): New. (scalar_chain::replace_with_subreg): New. (scalar_chain::replace_with_subreg_in_insn): New. (scalar_chain::emit_conversion_insns): New. (scalar_chain::make_vector_copies): New. (scalar_chain::convert_reg): New. (scalar_chain::convert_op): New. (scalar_chain::convert_insn): New. (scalar_chain::convert): New. (convert_scalars_to_vector): New. (pass_data_stv): New. (pass_stv): New. (make_pass_stv): New. (ix86_option_override): Created and register stv pass. (flag_opts): Add -mstv. (ix86_option_override_internal): Likewise. * config/i386/i386.md (SWIM1248x): New. (*movdi_internal): Add xmm to mem alternative for TARGET_STV. (and<mode>3): Use SWIM1248x iterator instead of SWIM. (*anddi3_doubleword): New. (*zext<mode>_doubleword): New. (*zextsi_doubleword): New. (<code><mode>3): Use SWIM1248x iterator instead of SWIM. (*<code>di3_doubleword): New. * config/i386/i386.opt (mstv): New. * dbgcnt.def (stv_conversion): New. gcc/testsuite/ PR target/65105 * gcc.target/i386/pr65105-1.c: New. * gcc.target/i386/pr65105-2.c: New. * gcc.target/i386/pr65105-3.c: New. * gcc.target/i386/pr65105-4.C: New. * gcc.dg/lower-subreg-1.c: Add -mno-stv options for ia32. From-SVN: r228231
2015-09-29Dump function attributesTom de Vries2-0/+11
2015-09-29 Tom de Vries <tom@codesourcery.com> * tree-cfg.c (dump_function_to_file): Dump function attributes. From-SVN: r228229
2015-09-29re PR target/67716 ([5] [SH]: Miscompiles libraw: Assembler: unaligned ↵Kaz Kojima2-36/+57
opcodes detected in executable segment) PR target/67716 * [SH] Implement targetm.override_options_after_change hook so to avoid resetting loop, jump and function alignment values with function-wise optimization flags. From-SVN: r228228
2015-09-29Fix gcc.dg/asm-4.cSegher Boessenkool2-4/+7
Double-quoted words in Tcl have substitutions performed on them, including backslash substitutions. That isn't terribly nice for regular expressions, so use braced words instead. 2015-09-28 Segher Boessenkool <segher@kernel.crashing.org> gcc/testsuite/ * gcc.dg/asm-4.c: Use braced words for the regular expressions. From-SVN: r228227
2015-09-29Daily bump.GCC Administrator1-1/+1
From-SVN: r228226
2015-09-28[multiple changes]Paul Thomas16-39/+566
2015-09-28 Paul Thomas <pault@gcc.gnu.org> PR fortran/40054 PR fortran/63921 * decl.c (get_proc_name): Return if statement function is found. * expr.c (gfc_check_vardef_context): Add error return for derived type expression lacking the derived type itself. * match.c (gfc_match_ptr_fcn_assign): New function. * match.h : Add prototype for gfc_match_ptr_fcn_assign. * parse.c : Add static flag 'in_specification_block'. (decode_statement): If in specification block match a statement function, then, if no error arising from statement function matching, try to match pointer function assignment. (parse_interface): Set 'in_specification_block' on exiting from parse_spec. (parse_spec): Set and then reset 'in_specification_block'. (gfc_parse_file): Set 'in_specification_block'. * resolve.c (get_temp_from_expr): Extend to include functions and array constructors as rvalues.. (resolve_ptr_fcn_assign): New function. (gfc_resolve_code): Call it on finding a pointer function as an lvalue. If valid or on error, go back to start of resolve_code. * symbol.c (gfc_add_procedure): Add a sentence to the error to flag up the ambiguity between a statement function and pointer function assignment at the end of the specification block. 2015-09-28 Paul Thomas <pault@gcc.gnu.org> PR fortran/40054 PR fortran/63921 * gfortran.dg/fmt_tab_1.f90: Change from run to compile and set standard as legacy. * gfortran.dg/fmt_tab_2.f90: Add extra tab error. * gfortran.dg/function_types_3.f90: Change error message to "Type inaccessible...." * gfortran.dg/ptr_func_assign_1.f08: New test. * gfortran.dg/ptr_func_assign_2.f08: New test. 2015-09-25 Mikael Morin <mikael.morin@sfr.fr> PR fortran/40054 PR fortran/63921 * gfortran.dg/ptr_func_assign_3.f08: New test. * gfortran.dg/ptr_func_assign_4.f08: New test. From-SVN: r228222
2015-09-28gomp-constants.h (GOMP_VERSION_NVIDIA_PTX): Increment.Nathan Sidwell17-114/+308
inlude/ * gomp-constants.h (GOMP_VERSION_NVIDIA_PTX): Increment. (GOMP_DIM_GANG, GOMP_DIM_WORKER, GOMP_DIM_VECTOR, GOMP_DIM_MAX, GOMP_DIM_MASK): New. (GOMP_LAUNCH_DIM, GOMP_LAUNCH_ASYNC, GOMP_LAUNCH_WAIT): New. (GOMP_LAUNCH_CODE_SHIFT, GOMP_LAUNCH_DEVICE_SHIFT, GOMP_LAUNCH_OP_SHIFT): New. (GOMP_LAUNCH_PACK, GOMP_LAUNCH_CODE, GOMP_LAUNCH_DEVICE, GOMP_LAUNCH_OP): New. (GOMP_LAUNCH_OP_MAX): New. libgomp/ * libgomp.h (acc_dispatch_t): Replace separate geometry args with array. * libgomp.map (GOACC_parallel_keyed): New. * oacc-parallel.c (goacc_wait): Take pointer to va_list. Adjust all callers. (GOACC_parallel_keyed): New interface. Lose geometry arguments and take keyed varargs list. Adjust call to exec_func. (GOACC_parallel): Force host fallback. * libgomp_g.h (GOACC_parallel): Remove. (GOACC_parallel_keyed): Declare. * plugin/plugin-nvptx.c (struct targ_fn_launch): New struct. (stuct targ_gn_descriptor): Replace name field with launch field. (nvptx_exec): Lose separate geometry args, take array. Process dynamic dimensions and adjust. (struct nvptx_tdata): Replace fn_names field with fn_descs. (GOMP_OFFLOAD_load_image): Adjust for change in function table data. (GOMP_OFFLOAD_openacc_parallel): Adjust for change in dimension passing. * oacc-host.c (host_openacc_exec): Adjust for change in dimension passing. gcc/ * config/nvptx/nvptx.c: Include omp-low.h and gomp-constants.h. (nvptx_record_offload_symbol): Record function execution geometry. * config/nvptx/mkoffload.c (process): Include launch geometry in function data. * omp-low.c (oacc_launch_pack): New. (replace_oacc_fn_attrib): New. (set_oacc_fn_attrib): New. (get_oacc_fn_attrib): New. (expand_omp_target): Create keyed varargs for GOACC_parallel call generation. * omp-low.h (get_oacc_fn_attrib): Declare. * builtin-types.def (DEF_FUNCTION_TyPE_VAR_6): New. (DEF_FUNCTION_TYPE_VAR_11): Delete. * tree.h (OMP_CLAUSE_EXPR): New. * omp-builtins.def (BUILT_IN_GOACC_PARALLEL): Change target fn name. gcc/lto/ * lto-lang.c (DEF_FUNCTION_TYPE_VAR_6): New. (DEF_FUNCTION_TYPE_VAR_11): Delete. gcc/c-family/ * c-common.c (DEF_FUNCTION_TYPE_VAR_6): New. (DEF_FUNCTION_TYPE_VAR_11): Delete. gcc/fortran/ * f95-lang.c (DEF_FUNCTION_TYPE_VAR_6): New. (DEF_FUNCTION_TYPE_VAR_11): Delete. * types.def (DEF_FUNCTION_TYPE_VAR_6): New. (DEF_FUNCTION_TYPE_VAR_11): Delete. gcc/ada/ * gcc-interface/utils.c (DEF_FUNCTION_TYPE_VAR_6): Define From-SVN: r228220
2015-09-28Re: [PATCH] Fix undefined behaviour in arc portJeff Law2-2/+2
Re: [PATCH] Fix undefined behaviour in arc port * config/arc/arc.c (arc_legitimize_reload_address): Fix stupid thinko in last change. * config/arc/constraints.md (C2a): Fix typos in last change. From-SVN: r228219
2015-09-28fix bootstrap due to unused variable warningAditya Kumar2-1/+6
* sese.c (invariant_in_sese_p_rec): Remove unused variable. Co-Authored-By: Sebastian Pop <s.pop@samsung.com> From-SVN: r228218
2015-09-28Redesign Graphite scop detectionSebastian Pop45-979/+905
Redesign Graphite scop detection for faster compiler time and detecting more SCoPs. Existing algorithm for SCoP detection in graphite was based on dominator tree where a tree (CFG) traversal was required for analyzing an SESE. The tree traversal is linear in the number of basic blocks and SCoP detection is (probably) linear in number of instructions. That algorithm utilized a generic infrastructure of SESE which does not directly represent loops. With regards to graphite framework, we are only interested in subtrees with loops. The new algorithm is geared towards tree traversal on loop structure. The algorithm is linear in number of loops which is faster than the previous algorithm. Briefly, we start the traversal at a loop-nest and analyze it recursively for validity. Once a valid loop is found we find a valid adjacent loop. If an adjacent loop is found and is valid, we merge both loop nests otherwise we form a SCoP from the previous loop nest, and resume the algorithm from the adjacent loop nest. The data structure to represent an SESE is an ordered pair of edges (entry, exit). The new algoritm can extend a SCoP in both the directions. With this approach, the number of instructions to be analyzed for validity reduces to a minimal set. We start by analyzing those statements which are inside a loop, because validity of those statements is necessary for the validity of loop. The statements outside the loop nest can be just excluded from the SESE if they are not valid. This patch depends on: https://gcc.gnu.org/ml/gcc-patches/2015-09/msg02024.html Passes (c,c++,fortran) regtest and bootstrap. gcc/ChangeLog: 2015-09-27 Aditya Kumar <hiraditya@msn.com> Sebastian Pop <s.pop@samsung.com> * graphite-optimize-isl.c (optimize_isl): * graphite-scop-detection.c (struct sese_l): New type. (get_entry_bb): API for getting entry bb of SESE. (get_exit_bb): API for getting exit bb of SESE. (class debug_printer): New type. Simple printer in debug mode. (trivially_empty_bb_p): New. Return true when BB is empty or contains only debug instructions. (graphite_can_represent_expr): Call scalar_evoution_in_region instead of analyze_scalar_evolution. Pass in scop instead of only the scop entry. (stmt_has_simple_data_refs_p): Pass in scop instead of only the scop entry. (stmt_simple_for_scop_p): Same. (harmful_stmt_in_bb): Same. (graphite_can_represent_loop): Deleted. (struct scopdet_info): Deleted. (scopdet_basic_block_info): Deleted. (build_scops_1): Deleted. (bb_in_sd_region): Deleted. (find_single_entry_edge): Deleted. (find_single_exit_edge): Deleted. (create_single_entry_edge): Deleted. (sd_region_without_exit): Deleted. (create_single_exit_edge): Deleted. (unmark_exit_edges): Deleted. (mark_exit_edges): Deleted. (create_sese_edges): Deleted. (build_graphite_scops): Deleted. (canonicalize_loop_closed_ssa): Recompute all dominators at the end. (build_scops): Use the new scop_builder to build scops. (dot_all_scops_1): Use the new pretty printer. Print loop father as well. (loop_body_is_valid_scop): New. Return true if loop body is a valid scop. (class scop_builder): New. Builds SCoPs for polyhedral optimizatios. (scop_builder): New. Constructor. (static sese_l invalid_sese): sese_l with invalid edges. (get_sese): Get an sese (from a loop) if possible, invalid_sese otherwise. (get_nearest_dom_with_single_entry): Get nearest dominator of a basic_block with single entry. Return NULL if we get to the beginning of a function. (get_nearest_pdom_with_single_exit): Get nearest post-dominator of a basic_block with single exit. Return NULL if we get to the beginning of a function. (print_sese): Pretty-print SESE. (merge_sese): Merge two SESEs if possible and return the new SESE. (build_scop_depth): Start building the SCoP within a loop nest. (build_scop_breadth): Start building the SCoP at a single loop depth. Merge adjacent SESEs if valid. (can_represent_loop_1): Returns true if Graphite can represent loop inside SCoP. Helper for can_represent_loop. (can_represent_loop): Returns true if Graphite can represent LOOP and all its nested loops in SCoP. (loop_is_valid_scop): Returns true if LOOP and all its nests constitute a valid SCoP. (region_has_one_loop): Returns true of a region has only one loop. (add_scop): Add SCoP to the list of valid scops. Removes an already existing scop if it intersects with or subsumed by this one. (harmful_stmt_in_region): Returns true if SCoP has any statment which cannot be represented by Graphite. (subsumes): Returns true of SCoP S1 subsumes SCoP S2. (remove_subscops): Remove any SCoP from the list of already found SCoPs, if subsumed by S1. (intersects): Return true if region bounded by SCoPs S1 and S2 intersect. (remove_intersecting_scops): Remove any SCoP which intersects with S1. * graphite.c (print_graphite_scop_statistics): (print_graphite_statistics): Print SCoP info while debugging. (graphite_initialize): Early exit in case number of loops in a function is less than PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION or basic blocks are more than PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION. (graphite_finalize): * params.def: Add PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION. * sese.h (sese_loop_depth): Remove unnecessary gcc_assert. (recompute_all_dominators): Recalculate POST_DOMINATORS. * tree-cfg.c (print_loops): Print the function name while printing loops. gcc/testsuite/ChangeLog: 2015-09-27 Aditya Kumar <hiraditya@msn.com> Sebastian Pop <s.pop@samsung.com> * gcc.dg/graphite/block-1.c: Modified to match the pattern. * gcc.dg/graphite/block-3.c: Same. * gcc.dg/graphite/block-4.c: Same. * gcc.dg/graphite/block-5.c: Same. * gcc.dg/graphite/block-6.c: Same. * gcc.dg/graphite/block-7.c: Same. * gcc.dg/graphite/block-8.c: Same. * gcc.dg/graphite/block-pr47654.c: Same. * gcc.dg/graphite/interchange-0.c: Same. * 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-12.c: Same. * gcc.dg/graphite/interchange-13.c: Same. * gcc.dg/graphite/interchange-14.c: Same. * gcc.dg/graphite/interchange-15.c: Same. * gcc.dg/graphite/interchange-3.c: Same. * gcc.dg/graphite/interchange-4.c: Same. * gcc.dg/graphite/interchange-5.c: Same. * gcc.dg/graphite/interchange-6.c: Same. * gcc.dg/graphite/interchange-7.c: Same. * gcc.dg/graphite/interchange-8.c: Same. * gcc.dg/graphite/interchange-9.c: Same. * gcc.dg/graphite/interchange-mvt.c: Same. * gcc.dg/graphite/pr35356-1.c (foo): Same. * gcc.dg/graphite/pr35356-3.c: Same. * gcc.dg/graphite/pr37485.c: Same. * gcc/testsuite/gcc.dg/graphite/run-id-pr67700-1.c: New test case. * gcc.dg/graphite/scop-1.c (int toto): Modified to match the pattern. * gcc.dg/graphite/scop-11.c: Same. * gcc.dg/graphite/scop-5.c: Same. * gcc.dg/graphite/uns-block-1.c: Same. * gcc.dg/graphite/uns-interchange-9.c: Same. * gfortran.dg/graphite/block-1.f90: Same. * gfortran.dg/graphite/interchange-3.f90: Same. * gfortran.dg/graphite/pr14741.f90: Same. From-SVN: r228215
2015-09-28re PR tree-optimization/67700 ([graphite] miscompile due to wrong codegen)Aditya Kumar6-3/+73
fix PR67700 The patch makes the detection of scop parameters in parameter_index_in_region a bit more conservative by discarding scalar variables defined in function of data references defined in the scop. 2015-09-25 Aditya Kumar <aditya.k7@samsung.com> Sebastian Pop <s.pop@samsung.com> PR tree-optimization/67700 * graphite-sese-to-poly.c (parameter_index_in_region): Call invariant_in_sese_p_rec. (extract_affine): Same. (rewrite_cross_bb_scalar_deps): Call update_ssa. * sese.c (invariant_in_sese_p_rec): Export. Handle vdefs and vuses. * sese.h (invariant_in_sese_p_rec): Declare. * testsuite/gcc.dg/graphite/run-id-pr67700.c: New. Co-Authored-By: Sebastian Pop <s.pop@samsung.com> From-SVN: r228214
2015-09-28extend.texi (Asm Labels): Break out text for data vs functions.David Wohlferd2-21/+29
2015-09-28 David Wohlferd <dw@LimeGreenSocks.com> * doc/extend.texi (Asm Labels): Break out text for data vs functions. From-SVN: r228212
2015-09-28[AArch64] Revert "Improve TLS Descriptor pattern to release RTL loop IV opt"Jiong Wang6-73/+24
2015-09-28 Jiong Wang <jiong.wang@arm.com> Revert: 2015-08-06 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> Jiong Wang <jiong.wang@arm.com> * config/aarch64/aarch64.d (tlsdesc_small_pseudo_<mode>): New pattern. * config/aarch64/aarch64.h (reg_class): New enumeration FIXED_REG0. (REG_CLASS_NAMES): Likewise. (REG_CLASS_CONTENTS): Likewise. * config/aarch64/aarch64.c (aarch64_class_max_nregs): Likewise. (aarch64_register_move_cost): Likewise. (aarch64_load_symref_appropriately): Invoke the new added pattern if possible. * config/aarch64/constraints.md (Uc0): New constraint. From-SVN: r228211
2015-09-28Now that muser-mode is default the multilib definitions does not require to ↵Daniel Hellstrom2-10/+19
specify that switch any more. Now that muser-mode is default the multilib definitions does not require to specify that switch any more. Add UT699 to multilib after recent patches. Add AT697F multilib since there are many LEON2 users running RTEMS. Add leon to multilib too. gcc/ * config/sparc/t-rtems: Remove -muser-mode. Add ut699, at697f and leon. From-SVN: r228204
2015-09-28rs6000.c (rs6000_xcoff_asm_named_section): Place SECTION_EXCLUDE in XO ↵David Edelsohn2-3/+10
mapping class. * config/rs6000/rs6000.c (rs6000_xcoff_asm_named_section): Place SECTION_EXCLUDE in XO mapping class. From-SVN: r228203
2015-09-28re PR target/54236 ([SH] Improve addc and subc insn utilization)Oleg Endo8-56/+322
gcc/ PR target/54236 * config/sh/predicates.md (t_reg_operand, negt_reg_operand): Allow and handle ne and eq codes. * config/sh/sh.c (sh_rtx_costs): Adjust matching of tst #imm,r0 insn. (sh_recog_treg_set_expr): Early accept negt_reg_operand. Eearly reject CONST_INT_P. Use reverse_condition. (sh_split_treg_set_expr): Likewise. gcc/testsuite/ PR target/54236 * gcc.target/sh/pr54236-1.c (test_09, test_10, test_11): New. * gcc.target/sh/pr59533-1.c (test_23, test_24, test_25, test_26, test_27): New. * gcc.target/sh/pr54236-5.c: New. * gcc.target/sh/pr54236-6.c: New. From-SVN: r228202
2015-09-28[Patch 1/2 AArch64/ARM] Give AArch64 ROR (Immediate) a new type attributeJames Greenhalgh6-10/+22
gcc/ * config/arm/types.md (type): Add rotate_imm. * config/aarch64/aarch64.md (*ror<mode>3_insn): Split out the ROR immediate case. (*rorsi3_insn_uxtw): Likewise. * config/aarch64/thunderx.md (thunderx_shift): Add rotate_imm. * config/arm/cortex-a53.md (cortex_a53_alu_shift): Add rotate_imm. * config/arm/cortex-a57.md (cortex_a53_alu): Add rotate_imm. From-SVN: r228197
2015-09-28Add missing PR line in ChangeLog entryTom de Vries1-0/+1
From-SVN: r228196
2015-09-28[RTL-ifcvt] PR rtl-optimization/67481: Look more deeply for CCmode sets ↵Kyrylo Tkachov2-0/+20
during if-covnersion PR rtl-optimization/67481 * ifcvt.c (contains_ccmode_rtx_p): New function. (insn_valid_noce_process_p): Use it. From-SVN: r228195
2015-09-28[RTL-ifcvt] PR rtl-optimization/67465: Handle pairs of complex+simple blocks ↵Kyrylo Tkachov4-1/+100
and empty blocks more gracefully PR rtl-optimization/67456 PR rtl-optimization/67464 PR rtl-optimization/67465 * ifcvt.c (noce_try_cmove_arith): Bail out if cannot conditionally move in the mode of x. Handle combination of complex and simple block pairs as well as the case when one is empty. * gcc.dg/pr67465.c: New test. From-SVN: r228194
2015-09-28Add gcc.dg/vect/pr62171.cTom de Vries2-0/+31
2015-09-28 Tom de Vries <tom@codesourcery.com> * gcc.dg/vect/pr62171.c: New test. From-SVN: r228193
2015-09-28update a few places for the change from gimple_statement_base to gimpleTrevor Saunders4-12/+18
gcc/ChangeLog: 2015-09-28 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * doc/gimple.texi: Update references to gimple_statement_base. * gdbhooks.py: Likewise. * gimple.h: Likewise. From-SVN: r228192
2015-09-28Use leon3 target for native LEON on Linux.Daniel Cederman2-0/+5
2015-09-28 Daniel Cederman <cederman@gaisler.com> Use leon3 target for native LEON on Linux. Linux requires LEON version 3 or above with CASA support. gcc/ * config/sparc/driver-sparc.c: map LEON to leon3 From-SVN: r228185
2015-09-28Make muser-mode the default for LEON3Daniel Cederman4-7/+15
2015-09-28 Daniel Cederman <cederman@gaisler.com> Make muser-mode the default for LEON3 The muser-mode flag causes the CASA instruction for LEON3 to use the user mode ASI. This is the correct behavior for almost all LEON3 targets. For this reason it makes sense to make user mode the default. gcc/ * config/sparc/sparc.opt: Rename mask from USER_MODE to SV_MODE and make it inverse to change default * config/sparc/sync.md: Only use supervisor ASI for CASA when in supervisor mode * doc/invoke.texi: Document change of default From-SVN: r228184
2015-09-28Do not use floating point registers when compiling with -msoft-float for SPARCDaniel Cederman3-11/+25
2015-09-28 Daniel Cederman <cederman@gaisler.com> Do not use floating point registers when compiling with -msoft-float for SPARC __builtin_apply* and __builtin_return accesses the floating point registers on SPARC even when compiling with -msoft-float. gcc/ * config/sparc/sparc.c (sparc_function_value_regno_p): Do not return true on %f0 for a target without FPU. * config/sparc/sparc.md (untyped_call): Do not save %f0 for a target without FPU. (untyped_return): Do not load %f0 for a target without FPU. From-SVN: r228183
2015-09-28aarch64.md (prefetch): Change the predicate of operand 0 to register_operand.Andrew Pinski2-1/+6
2015-09-28 Andrew Pinski <apinski@cavium.com> * config/aarch64/aarch64.md (prefetch): Change the predicate of operand 0 to register_operand. From-SVN: r228182
2015-09-28Daily bump.GCC Administrator1-1/+1
From-SVN: r228181
2015-09-27predicates.md (register_sse4nonimm_operand): New predicate.Uros Bizjak3-48/+40
* config/i386/predicates.md (register_sse4nonimm_operand): New predicate. * config/i386/sse.md (PEXTR_MODE12): New mode iterator. (*vec_extract<mode>): Use PEXTR_MODE12 instead of VI12_128 mode. Use register_sse4nonimm_operand as operand 0 predicate. (*vec_extractv8hi_sse2): Remove insn pattern. (*vec_extract<PEXTR_MODE12:mode>_zext): Merge insn pattern from *vec_extractv8hi_zext and *vec_extractv16qi_zext patterns. From-SVN: r228178
2015-09-27pr44641.C: Revert line number change.David Edelsohn2-7/+11
* g++.dg/debug/dwarf2/pr44641.C: Revert line number change. Remove skip on AIX. XFAIL individual line tests. From-SVN: r228177
2015-09-27re PR target/67391 ([SH] Convert clrt addc to normal add insn)Oleg Endo4-11/+89
gcc/ PR target/67391 * config/sh/sh-protos.h (sh_lra_p): Declare. * config/sh/sh.c (sh_lra_p): Make non-static. * config/sh/sh.md (addsi3): Use arith_reg_dest for operands[0] and arith_reg_operand for operands[1]. Remove TARGET_SHMEDIA case. Expand into addsi3_scr if operands[2] if needed. (*addsi3_compact): Rename to *addsi3_compact_lra. Use arith_reg_operand for operands[1]. Allow it only when LRA is enabled. (addsi3_scr, *addsi3): New insn_and_split patterns. Co-Authored-By: Kaz Kojima <kkojima@gcc.gnu.org> From-SVN: r228176
2015-09-27revert to assign_parms assignments using default defsAlexandre Oliva14-537/+688
Revert the fragile and complicated changes to assign_parms designed to enable it to use RTL assigments chosen by cfgexpand, and instead have cfgexpand use the RTL assignments by assign_parms, keying them off of the default defs that are now necessarily introduced for each parm and result. The possible lack of a default def was already a problem, and the fallbacks in place were not enough, as shown by PR67312. We now have checking asserts in set_rtl that verify that we're assigning to each var a piece of RTL that matches the expectations set forth by use_register_for_decl. for gcc/ChangeLog PR rtl-optimization/64164 PR tree-optimization/67312 PR middle-end/67340 PR middle-end/67490 PR bootstrap/67597 * cfgexpand.c (parm_in_stack_slot_p): Remove. (ssa_default_def_partition): Remove. (get_rtl_for_parm_ssa_default_def): Remove. (set_rtl): Check that RTL assignments match expectations. Loop on SUBREGs, CONCATs and PARALLELs subexprs. Set only the default def location for params and results. Record SSA names or types in REG and MEM attrs, respectively. (set_parm_rtl): New. (expand_one_ssa_partition): Drop logic that assigned MEMs with unassigned addresses. (adjust_one_expanded_partition_var): Don't accept NULL RTL on deferred stack alloc vars. (expand_used_vars): Skip partitions holding parm default defs. Move adjust_one_expanded_partition_var loop... (pass_expand::execute): ... here. Drop redundant assert. Adjust comments before the final loop over all ssa names. Require assigned rtl of parms and results to match exactly. Reset its attributes to match them, not any other variables in the same partition. (expand_debug_expr): Use entry value for PARM's default defs only iff they have zero nondebug uses. * cfgexpand.h (parm_in_stack_slot_p): Remove. (get_rtl_for_parm_ssa_default_def): Remove. (set_parm_rtl): Declare. * doc/invoke.texi: Improve wording. * explow.c (promote_decl_mode): Fix promote_function_mode for result decls not by reference. (promote_ssa_mode): Disregard BLKmode from promote_decl, and bypass TYPE_MODE to get the actual vector mode. * function.c: Include tree-dfa.h. Revert 2015-08-14's and 2015-08-19's changes as follows. Drop include of basic-block.h and df.h. (rtl_for_parm): Remove. (maybe_reset_rtl_for_parm): Remove. (parm_in_unassigned_mem_p): Remove. (use_register_for_decl): Add logic for RESULT_DECLs matching assign_parms' behavior. (split_complex_args): Revert. (assign_parms_augmented_arg_list): Revert. Add comment referencing the logic above. (assign_parm_adjust_stack_rtl): Revert. (assign_parm_setup_block): Revert. Use set_parm_rtl instead of SET_DECL_RTL. Set up a REG if the parm demands so. (assign_parm_setup_reg): Revert. Consolidated SET_DECL_RTL calls into a single set_parm_rtl. Set up a temporary RTL temporarily for expand_assignment. (assign_parm_setup_stack): Revert. Use set_parm_rtl. (assign_parms_unsplit_complex): Revert. Use set_parm_rtl. (assign_bounds): Revert. (assign_parms): Revert. Use set_parm_rtl. (allocate_struct_function): Relayout result and parms of non-abstruct functions. (expand_function_start): Revert. Use set_parm_rtl. If the result is not a hard reg, create a pseudo from the promoted mode of the default def. Promote static chain mode. * tree-outof-ssa.c (remove_ssa_form): Drop unused partition_has_default_def. Set up partitions_for_parm_default_defs. (finish_out_of_ssa): Remove partition_has_default_def. Release partitions_for_parm_default_defs. * tree-outof-ssa.h (struct ssaexpand): Remove partition_has_default_def. Add partitions_for_parm_default_defs. * tree-ssa-coalesce.c: Include tree-dfa.h, tm_p.h and stor-layout.h. (build_ssa_conflict_graph): Fix conflict-detection of default defs of even unused default defs of params and results. (for_all_parms): New. (create_default_def): New. (register_default_def): New. (coalesce_with_default): New. (create_outofssa_var_map): Create default defs for all parms and results, and register their partitions. Add GIMPLE_RETURN operands as coalesce candidates with results. Add default defs of each parm or result as coalesce candidates with its other defs. Mark each result def, and each default def of parms, as used_in_copy. (gimple_can_coalesce_p): Call it. Call use_register_for_decl with the ssa names, even anonymous ones. Drop parm_in_stack_slot_p calls. Require same signedness and alignment. (coalesce_ssa_name): Add coalesce candidates for all defs of each parm and result, even unused ones. (parm_default_def_partition_arg): New type. (set_parm_default_def_partition): New. (get_parm_default_def_partitions): New. * tree-ssa-coalesce.h (get_parm_default_def_partitions): New. * tree-ssa-live.c (partition_view_init): Regard unused defs of parms and results as used. (verify_live_on_entry): Don't error out just because they're not live. for gcc/testsuite/ChangeLog PR rtl-optimization/64164 PR tree-optimization/67312 * gcc.dg/pr67312.c: New. From Zdenek Sojka. * gcc.target/i386/stackalign/return-4.c: Add -O. From-SVN: r228175
2015-09-26* g++.dg/debug/dwarf2/pr44641.C: Add one to expected line numbers.David Edelsohn2-3/+7
From-SVN: r228174
2015-09-27Daily bump.GCC Administrator1-1/+1
From-SVN: r228173
2015-09-26Fix missing deep copy when assigning a DT constructor to an arrayMikael Morin4-1/+41
This adds the missing deep copy when assiging a constructor of a derived type with allocatable components to an array. The check for constantness is removed so that the deep_copy argument passed to gfc_trans_scalar_assign is set to true. PR fortran/67721 gcc/fortran/ * trans-expr.c (gfc_trans_assignment_1): Remove the non-constantness condition guarding deep copy. gcc/testsuite/ * gfortran.dg/alloc_comp_deep_copy_3.f03: New. From-SVN: r228170
2015-09-26re PR fortran/67567 (resolve.c: gfc_error called with iface->module == NULL)Paul Thomas2-17/+21
2013-09-26 Paul Thomas <pault@gcc.gnu.org> PR fortran/67567 * resolve.c (resolve_fl_procedure): For module procedures, take the parent module name and the submodule name from the name of the namespace. From-SVN: r228169
2015-09-26pr64935-1.c: XFAIL on AIX.David Edelsohn26-25/+62
* gcc.dg/pr64935-1.c: XFAIL on AIX. * gcc.dg/pr64935-2.c: XFAIL on AIX. * gcc.dg/debug/dwarf2/dwarf2-macro2.c: XFAIL Start new file on AIX. * gcc.dg/debug/dwarf2/dwarf2-macro2.c: XFAIL At line number on AIX. * gcc.dg/debug/dwarf2/global-used-types.c: XFAIL ascii on AIX. * gcc.dg/debug/dwarf2/noreturn-function-keyword.c: XFAIL DW_AT_noreturn on AIX. * gcc.dg/debug/dwarf2/noreturn-function-attribute.c: XFAIL DW_AT_noreturn on AIX. * gcc.dg/debug/dwarf2/lang-c89.c: XFAIL DW_AT_language on AIX. * gcc.dg/debug/dwarf2/stacked-qualified-types-3.c: XFAIL DW_TAG on AIX. * g++.dg/debug/dwarf2/deleted-member-function.C: XFAIL DW_AT_GNU_deleted on AIX. * g++.dg/debug/dwarf2/noreturn-function.C: XFAIL DW_AT_noreturn on AIX. * g++.dg/debug/dwarf2/template-params-6.C: XFAIL ascii on AIX. * g++.dg/debug/dwarf2/dwarf4-nested.C: XFAIL ascii on AIX. * g++.dg/debug/dwarf2/pubnames-2.C: Skip on AIX. * g++.dg/debug/dwarf2/pr44641.C: Skip on AIX. * g++.dg/debug/dwarf2/pr46527.C: XFAIL on AIX. * g++.dg/debug/dwarf2/imported-decl-2.C: XFAIL ascii on AIX. * g++.dg/debug/dwarf2/namespace-1.C: XFAIL ascii on AIX. * g++.dg/debug/dwarf2/global-used-types-1.C: XFAIL ascii on AIX. * g++.dg/debug/dwarf2/lambda1.C: XFAIL ascii on AIX. * g++.dg/debug/dwarf2/pubnames-3.C: Skip on AIX. * g++.dg/debug/dwarf2/pr61433.C: XFAIL on AIX. * g++.dg/debug/dwarf2/nested-4.C: XFAIL on AIX. * g++.dg/debug/dwarf2/template-func-params-6.C: XFAIL ascii on AIX. * g++.dg/debug/dwarf2/lineno-simple1.C: XFAIL on AIX. From-SVN: r228168
2015-09-26dwarf2out.c (XCOFF_DEBUGGING_INFO): Default 0 definition.David Edelsohn9-51/+477
* dwarf2out.c (XCOFF_DEBUGGING_INFO): Default 0 definition. (HAVE_XCOFF_DWARF_EXTRAS): Default to 0 definition. (output_fde): Don't output length for debug_frame on AIX. (output_call_frame_info): Don't output length for debug_frame on AIX. (have_macinfo): Force to False for XCOFF_DEBUGGING_INFO and not HAVE_XCOFF_DWARF_EXTRAS. (add_AT_loc_list): Return early if XCOFF_DEBUGGING_INFO and not HAVE_XCOFF_DWARF_EXTRAS. (output_compilation_unit_header): Don't output length on AIX. (output_pubnames): Don't output length on AIX. (output_aranges): Delete argument. Compute length locally. Don't output length on AIX. (output_line_info): Don't output length on AIX. (dwarf2out_finish): Don't compute aranges_length. * dwarf2asm.c (XCOFF_DEBUGGING_INFO): Default 0 definition. (dw2_asm_output_nstring): Emit .byte not .ascii on AIX. * config/rs6000/rs6000.c (rs6000_output_dwarf_dtprel): Emit correct symbol decoration for AIX. (rs6000_xcoff_debug_unwind_info): New. (rs6000_xcoff_asm_named_section): Emit .dwsect pseudo-op for SECTION_DEBUG. (rs6000_xcoff_declare_function_name): Emit different .function pseudo-op when DWARF2_DEBUG. Don't call xcoffout_declare_function for DWARF2_DEBUG. * config/rs6000/xcoff.h (TARGET_DEBUG_UNWIND_INFO): Redefine. * config/rs6000/aix71.h: New. * configure.ac (gcc_cv_as_aix_dwloc): Check AIX as for DWARF locations support. * configure: Regenerate. * config.gcc (powerpc-ibm-aix[789]+): New stanza for AIX 7.1+ with DWARF support. From-SVN: r228167
2015-09-26[PATCH] Fix undefined behaviour in arc portJeff Law3-4/+11
* config/arc/arc.c (arc_output_addsi): Fix left shift undefined behaviour. * config/arc/constraints.md (Cca, C2a): Fix left shift undefined behaviour. From-SVN: r228166
2015-09-26[PATCH] Fix undefined behaviour in SH portJeff Law2-1/+4
[PATCH] Fix undefined behaviour in SH port * config/sh/sh.h (CONST_OK_FOR_J16): Fix left shift undefined behaviour From-SVN: r228165
2015-09-26[PATCH] Fix undefined behaviour in mips portJeff Law2-1/+4
[PATCH] Fix undefined behaviour in mips port * config/mips/mips.c (mips_compute_frame_info): Fix left shift undefined behaviour. From-SVN: r228164
2015-09-26[PATCH] Fix undefined behaviour in cris portJeff Law2-2/+10
[PATCH] Fix undefined behaviour in cris port * config/cris/cris.md (asrandb): Fix left shift undefined behaviour. (asrandw): Likewise. From-SVN: r228163
2015-09-26Daily bump.GCC Administrator1-1/+1
From-SVN: r228161
2015-09-25re PR fortran/67614 (ICE on using arithmetic if with null)Steven G. Kargl4-1/+27
2015-09-25 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/67614 * resolve.c (gfc_resolve_code): Prevent ICE for invalid EXPR_NULL. 2015-09-25 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/67614 * gfortran.dg/pr67614.f90: New test. From-SVN: r228156
2015-09-25re PR fortran/67525 (ICE on select type with improper selector)Steven G. Kargl4-4/+36
2015-09-25 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/67525 * parse.c (match_deferred_characteristics): Remove an assert, which allows an invalid SELECT TYPE selector to be detected. 2015-09-25 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/67525 * gfortran.dg/pr67525.f90: New test. From-SVN: r228155