aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2015-11-16sparc.c (sparc_emit_probe_stack_range): Adjust.Eric Botcazou2-20/+17
* config/sparc/sparc.c (sparc_emit_probe_stack_range): Adjust. (output_probe_stack_range): Rotate the loop and simplify. From-SVN: r230414
2015-11-16rs6000.c (rs6000_emit_probe_stack_rang): Adjust.Eric Botcazou2-19/+21
* config/rs6000/rs6000.c (rs6000_emit_probe_stack_rang): Adjust. (output_probe_stack_range): Rotate the loop and simplify. From-SVN: r230413
2015-11-16i386.c (ix86_adjust_stack_and_probe): Adjust and use an lea instruction when ↵Eric Botcazou2-38/+49
possible. * config/i386/i386.c (ix86_adjust_stack_and_probe): Adjust and use an lea instruction when possible. (output_adjust_stack_and_probe): Rotate the loop and simplify. (ix86_emit_probe_stack_range): Adjust. (output_probe_stack_range): Rotate the loop and simplify. From-SVN: r230412
2015-11-16arm_neon.h: Remove #ifndef check on __ARM_NEON.Christian Bruel6-258/+278
2015-11-16 Christian Bruel <christian.bruel@st.com> * config/arm/arm_neon.h: Remove #ifndef check on __ARM_NEON. Replace #ifdef __ARM_FEATURE_CRYPTO, __ARM_FEATURE_FMA, __ARM_FP with appropriate pragma GCC target. 2015-11-16 Christian Bruel <christian.bruel@st.com> * lib/target-supports.exp (check_effective_target_arm_neon_ok_nocache): Check __ARM_NEON__ instead of "arm_neon.h. * gcc.target/arm/attr-neon3.c: New test. * gcc.target/arm/attr-neon-fp16.c: Likewise From-SVN: r230411
2015-11-16re PR target/65837 ([arm-linux-gnueabihf] lto1 target specific builtin not ↵Christian Bruel2-2/+12
available) 2015-11-16 Christian Bruel <christian.bruel@st.com> PR target/65837 * config/arm/arm-c.c (arm_cpu_builtins): Conditionally set and reset __ARM_FEATURE_FMA and __ARM_NEON_FP, __ARM_FP. From-SVN: r230410
2015-11-16[AArch64] Cortex-A57 Choose some new branch costs.James Greenhalgh2-1/+13
gcc/ * config/aarch64/aarch64.c (cortexa57_branch_costs): New. (cortexa57_tunings): Use it. From-SVN: r230409
2015-11-16re PR target/65837 ([arm-linux-gnueabihf] lto1 target specific builtin not ↵Christian Bruel11-34/+222
available) 2015-11-16 Christian Bruel <christian.bruel@st.com> PR target/65837 * config/arm/arm-c.c (arm_cpu_builtins): Set or reset __ARM_FEATURE_CRYPTO, __VFP_FP__, __ARM_NEON__ (arm_pragma_target_parse): Change check for arm_cpu_builtins. undefine __ARM_FP. * config/arm/arm.c (arm_can_inline_p): Check FPUs. (arm_valid_target_attribute_rec): Handle -mfpu attribute target. * doc/invoke.texi (-mfpu=): Mention attribute and pragma. * doc/extend.texi (-mfpu=): Describe attribute. 2015-11-16 Christian Bruel <christian.bruel@st.com> PR target/65837 gcc.target/arm/lto/pr65837_0.c gcc.target/arm/attr-neon2.c gcc.target/arm/attr-neon.c gcc.target/arm/attr-neon-builtin-fail.c gcc.target/arm/attr-crypto.c From-SVN: r230408
2015-11-16coding nitChristian Bruel1-1/+1
From-SVN: r230407
2015-11-16re PR target/65837 ([arm-linux-gnueabihf] lto1 target specific builtin not ↵Christian Bruel4-73/+107
available) 2015-11-16 Christian Bruel <christian.bruel@st.com> PR target/65837 * config/arm/arm-protos.h (arm_init_neon_builtins): Declare. * config/arm/arm.c (arm_valid_target_attribute_tree): Call arm_init_neon_builtins. * config/arm/arm-builtins.c (arm_init_neon_builtins): Split into... (arm_init_neon_builtins_internal) (arm_init_crypto_builtins_internal): Test and set neon_set_p, neon_crypto_set_p. (neon_set_p, neon_crypto_set_p): New static booleans. From-SVN: r230406
2015-11-16bb-slp-32.c: Adjust testcase.Richard Biener2-5/+9
2015-11-16 Richard Biener <rguenther@suse.de> * gcc.dg/vect/bb-slp-32.c: Adjust testcase. From-SVN: r230405
2015-11-16re PR target/65837 ([arm-linux-gnueabihf] lto1 target specific builtin not ↵Christian Bruel3-36/+46
available) 2015-11-16 Christian Bruel <christian.bruel@st.com> PR target/65837 * config/arm/arm.c (arm_fpu_desc): Remove. (all_fpus): Make global. (arm_option_override): Use FPU TARGET accessors. (arm_declare_function_name): Likewise. * config/arm/arm.h (TARGET_VFP, TARGET_VFPD32, TARGET_VFP5) (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE, TARGET_NEON_FP16) (TARGET_FP16, TARGET_FMA, TARGET_FPU_ARMV8, TARGET_CRYPTO) (TARGET_NEON): Likewise. (all_fpus): Declare extern. (TARGET_FPU_NAME, TARGET_FPU_MODEL, TARGET_FPU_REV) (TARGET_FPU_REGS, TARGET_FPU_FEATURES): Define all_fpus accessors. From-SVN: r230404
2015-11-16PR 68366 - include emit-rtl.h in sdbout.cTrevor Saunders2-0/+7
Some of the pa target macros rely on macros in emit-rtl.h and sdbout.c uses some of those macros, which means that sdbout.c needs to include emit-rtl.h. gcc/ChangeLog: 2015-11-15 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> PR middle-end/68366 * sdbout.c: Include emit-rtl.h and function.h. From-SVN: r230402
2015-11-16Daily bump.GCC Administrator1-1/+1
From-SVN: r230401
2015-11-15freebsd.h (SUBTARGET32_DEFAULT_CPU): Change to i586.Gerald Pfeifer2-4/+6
* config/i386/freebsd.h (SUBTARGET32_DEFAULT_CPU): Change to i586. Remove support for FreeBSD 5 and earlier. From-SVN: r230397
2015-11-15re PR fortran/50221 (Allocatable string length fails with array assignment)Paul Thomas14-12/+598
2015-11-15 Paul Thomas <pault@gcc.gnu.org> PR fortran/50221 PR fortran/68216 PR fortran/63932 PR fortran/66408 * trans_array.c (gfc_conv_scalarized_array_ref): Pass the symbol decl for deferred character length array references. * trans-stmt.c (gfc_trans_allocate): Keep the string lengths to update deferred length character string lengths. * trans-types.c (gfc_get_dtype_rank_type); Use the string length of deferred character types for the dtype size. * trans.c (gfc_build_array_ref): For references to deferred character arrays, use the domain max value, if it is a variable to set the 'span' and use pointer arithmetic for acces to the element. (trans_code): Set gfc_current_locus for diagnostic purposes. PR fortran/67674 * trans-expr.c (gfc_conv_procedure_call): Do not fix deferred string lengths of components. PR fortran/49954 * resolve.c (deferred_op_assign): New function. (gfc_resolve_code): Call it. * trans-array.c (concat_str_length): New function. (gfc_alloc_allocatable_for_assignment): Jump directly to alloc/ realloc blocks for deferred character length arrays because the string length might change, even if the shape is the same. Call concat_str_length to obtain the string length for concatenation since it is needed to compute the lhs string length. Set the descriptor dtype appropriately for the new string length. * trans-expr.c (gfc_trans_assignment_1): Use the rse string length for all characters, other than deferred types. For concatenation operators, push the rse.pre block to the inner most loop so that the temporary pointer and the assignments are properly placed. 2015-11-15 Paul Thomas <pault@gcc.gnu.org> PR fortran/50221 * gfortran.dg/deferred_character_1.f90: New test. * gfortran.dg/deferred_character_4.f90: New test for comment #4 of the PR. PR fortran/68216 * gfortran.dg/deferred_character_2.f90: New test. PR fortran/67674 * gfortran.dg/deferred_character_3.f90: New test. PR fortran/63932 * gfortran.dg/deferred_character_5.f90: New test. PR fortran/66408 * gfortran.dg/deferred_character_6.f90: New test. PR fortran/49954 * gfortran.dg/deferred_character_7.f90: New test. From-SVN: r230396
2015-11-15always define ENABLE_OFFLOADINGTrevor Saunders11-35/+58
gcc/cp/ChangeLog: 2015-11-14 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * parser.c (cp_parser_omp_declare_target): Adjust. gcc/ChangeLog: 2015-11-14 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * configure: Regenerate. * configure.ac: Always define ENABLE_OFFLOADING. * cgraph.c (cgraph_node::create): Adjust. * gcc.c (process_command): Likewise. * omp-low.c (create_omp_child_function): Likewise. (expand_omp_target): Likewise. * varpool.c (varpool_node::get_create): Likewise. gcc/c/ChangeLog: 2015-11-14 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * c-parser.c (c_parser_omp_declare_target): Adjust. From-SVN: r230393
2015-11-15always define EH_RETURN_HANDLER_RTXTrevor Saunders4-7/+14
gcc/ChangeLog: 2015-11-14 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * defaults.h (EH_RETURN_HANDLER_RTX): New default definition. * df-scan.c (df_get_exit_block_use_set): Adjust. * except.c (expand_eh_return): Likewise. From-SVN: r230392
2015-11-15always define TARGET_PECOFFTrevor Saunders6-14/+17
gcc/ChangeLog: 2015-11-14 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * config/i386/i386.h (TARGET_PECOFF): Remove define. * defaults.h (TARGET_PECOFF): New default definition. * varasm.c (handle_vtv_comdat_section): Adjust. gcc/cp/ChangeLog: 2015-11-14 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * vtable-class-hierarchy.c (vtv_generate_init_routine): Adjust. From-SVN: r230391
2015-11-15remove conditional compilation of sdb debug infoTrevor Saunders9-22/+24
gcc/ChangeLog: 2015-11-14 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * defaults.h: New definition of SDB_DEBUGGING_INFO. * doc/tm.texi: Regenerate. * doc/tm.texi.in: Adjust. * final.c (rest_of_clean_state): Remove check if SDB_DEBUGGING_INFO is defined. * function.c (number_blocks): Likewise. * output.h: Likewise. * sdbout.c: Likewise. * toplev.c (process_options): Likewise. From-SVN: r230390
2015-11-15remove EXTENDED_SDB_BASIC_TYPESTrevor Saunders4-17/+10
The last target using this was i960, which was removed many years ago, so there's no reason to keep it. gcc/ChangeLog: 2015-11-14 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * gsyms.h (enum sdb_type): Remove code for EXTENDED_SDB_BASIC_TYPES. (enum sdb_masks): Likewise. * sdbout.c (plain_type_1): Likewise. * system.h: Poison EXTENDED_SDB_BASIC_TYPES macro. From-SVN: r230389
2015-11-15Daily bump.GCC Administrator1-1/+1
From-SVN: r230388
2015-11-14re PR bootstrap/68346 (Bootstrap failure on i686-linux)Jason Merrill3-1/+14
PR bootstrap/68346 * call.c (build_new_op_1): Don't fold arguments to warn_tautological_cmp. From-SVN: r230382
2015-11-14omp-low.c (lower_omp_ordered): Add argument to GOMP_SMD_ORDERED_* internal ↵Jakub Jelinek7-5/+48
calls - 0 if... gcc/ 2015-11-14 Jakub Jelinek <jakub@redhat.com> * omp-low.c (lower_omp_ordered): Add argument to GOMP_SMD_ORDERED_* internal calls - 0 if ordered simd and 1 for ordered threads simd. * tree-vectorizer.c (adjust_simduid_builtins): If GOMP_SIMD_ORDERED_* argument is 1, replace it with GOMP_ordered_* call instead of removing it. gcc/c/ 2015-11-14 Jakub Jelinek <jakub@redhat.com> * c-typeck.c (c_finish_omp_clauses): Don't mark GOMP_MAP_FIRSTPRIVATE_POINTER decls addressable. gcc/cp/ 2015-11-14 Jakub Jelinek <jakub@redhat.com> * semantics.c (finish_omp_clauses): Don't mark GOMP_MAP_FIRSTPRIVATE_POINTER decls addressable. libgomp/ 2015-11-14 Jakub Jelinek <jakub@redhat.com> Aldy Hernandez <aldyh@redhat.com> Ilya Verbin <ilya.verbin@intel.com> * ordered.c (gomp_doacross_init, GOMP_doacross_post, GOMP_doacross_wait, gomp_doacross_ull_init, GOMP_doacross_ull_post, GOMP_doacross_ull_wait): For GFS_GUIDED don't divide number of iterators or IV by chunk size. * parallel.c (gomp_resolve_num_threads): Don't assume that if thr->ts.team is non-NULL, then pool must be non-NULL. * libgomp-plugin.h (GOMP_PLUGIN_target_task_completion): Declare. * libgomp.map (GOMP_PLUGIN_1.1): New symbol version, export GOMP_PLUGIN_target_task_completion. * Makefile.am (libgomp_la_SOURCES): Add priority_queue.c. * Makefile.in: Regenerate. * libgomp.h: Shuffle prototypes and forward definitions around so priority queues can be defined. (enum gomp_task_kind): Add GOMP_TASK_ASYNC_RUNNING. (enum gomp_target_task_state): New enum. (struct gomp_target_task): Add state, tgt, task and team fields. (gomp_create_target_task): Change return type to bool, add state argument. (gomp_target_task_fn): Change return type to bool. (struct gomp_device_descr): Add async_run_func. (struct gomp_task): Remove children, next_child, prev_child, next_queue, prev_queue, next_taskgroup, prev_taskgroup. Add pnode field. (struct gomp_taskgroup): Remove children. Add taskgroup_queue. (struct gomp_team): Change task_queue type to a priority queue. (splay_compare): Define inline. (priority_queue_offset): New. (priority_node_to_task): New. (task_to_priority_node): New. * oacc-mem.c: Do not include splay-tree.h. * priority_queue.c: New file. * priority_queue.h: New file. * splay-tree.c: Do not include splay-tree.h. (splay_tree_foreach_internal): New. (splay_tree_foreach): New. * splay-tree.h: Become re-entrant if splay_tree_prefix is defined. (splay_tree_callback): Define typedef. * target.c (splay_compare): Move to libgomp.h. (GOMP_target): Don't adjust *thr in any way around running offloaded task. (GOMP_target_ext): Likewise. Handle target nowait. (GOMP_target_update_ext, GOMP_target_enter_exit_data): Check return value from gomp_create_target_task, if false, fallthrough as if no dependencies exist. (gomp_target_task_fn): Change return type to bool, return true if the task should have another part scheduled later. Handle target nowait. (gomp_load_plugin_for_device): Initialize async_run. * task.c (gomp_init_task): Initialize children_queue. (gomp_clear_parent_in_list): New. (gomp_clear_parent_in_tree): New. (gomp_clear_parent): Handle priorities. (GOMP_task): Likewise. (priority_queue_move_task_first, gomp_target_task_completion, GOMP_PLUGIN_target_task_completion): New functions. (gomp_create_target_task): Use priority queues. Change return type to bool, add state argument, return false if for async {{enter,exit} data,update} constructs no dependencies need to be waited for, handle target nowait. Set task->fn to NULL instead of gomp_target_task_fn. (verify_children_queue): Remove. (priority_list_upgrade_task): New. (priority_queue_upgrade_task): New. (verify_task_queue): Remove. (priority_list_downgrade_task): New. (priority_queue_downgrade_task): New. (gomp_task_run_pre): Use priority queues. Abstract code out to priority_queue_downgrade_task. (gomp_task_run_post_handle_dependers): Use priority queues. (gomp_task_run_post_remove_parent): Likewise. (gomp_task_run_post_remove_taskgroup): Likewise. (gomp_barrier_handle_tasks): Likewise. Handle target nowait target tasks specially. (GOMP_taskwait): Likewise. (gomp_task_maybe_wait_for_dependencies): Likewise. Abstract code to priority-queue_upgrade_task. (GOMP_taskgroup_start): Use priority queues. (GOMP_taskgroup_end): Likewise. Handle target nowait target tasks specially. If taskgroup is NULL, and thr->ts.level is 0, act as a barrier. * taskloop.c (GOMP_taskloop): Handle priorities. * team.c (gomp_new_team): Call priority_queue_init. (free_team): Call priority_queue_free. (gomp_free_thread): Call gomp_team_end if thr->ts.team is artificial team created for target nowait in implicit parallel region. (gomp_team_start): For nested check, test thr->ts.level instead of thr->ts.team != NULL. * testsuite/libgomp.c/doacross-3.c: New test. * testsuite/libgomp.c/ordered-5.c: New test. * testsuite/libgomp.c/priority.c: New test. * testsuite/libgomp.c/target-31.c: New test. * testsuite/libgomp.c/target-32.c: New test. * testsuite/libgomp.c/target-33.c: New test. * testsuite/libgomp.c/target-34.c: New test. liboffloadmic/ 2015-11-14 Ilya Verbin <ilya.verbin@intel.com> * runtime/offload_host.cpp (task_completion_callback): New variable. (offload_proxy_task_completed_ooo): Call task_completion_callback. (__offload_register_task_callback): New function. * runtime/offload_host.h (__offload_register_task_callback): New declaration. * plugin/libgomp-plugin-intelmic.cpp (offload): Add async_data argument, handle async offloading. (register_main_image): Call register_main_image. (GOMP_OFFLOAD_init_device, get_target_table, GOMP_OFFLOAD_alloc, GOMP_OFFLOAD_free, GOMP_OFFLOAD_host2dev, GOMP_OFFLOAD_dev2host, GOMP_OFFLOAD_dev2dev) Adjust offload callers. (GOMP_OFFLOAD_async_run): New function. (GOMP_OFFLOAD_run): Implement using GOMP_OFFLOAD_async_run. From-SVN: r230381
2015-11-14re PR fortran/67803 (ICE on concatenating wrong character array constructor)Steven G. Kargl4-0/+55
2015-11-14 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/67803 * array.c (gfc_match_array_constructor): If array constructor included a CHARACTER typespec, check array elements for compatible type. 2015-11-14 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/67803 * gfortran.dg/pr67803.f90: New test. From-SVN: r230379
2015-11-14* g++.dg/cpp/ucn-1.C: Fix typo.David Edelsohn2-1/+5
From-SVN: r230376
2015-11-14c-decl.c: Use RECORD_OR_UNION_TYPE_P throughout.Marek Polacek3-79/+45
* c-decl.c: Use RECORD_OR_UNION_TYPE_P throughout. * c-typeck.c: Likewise. From-SVN: r230375
2015-11-14re PR ada/68345 (gnat build broken on dragonfly due to omission of r229342)Arnaud Charlet2-2/+6
2015-11-13 Arnaud Charlet <charlet@adacore.com> PR ada/68345 * s-osinte-dragonfly.ads (Get_Page_Size): C function returns an int. From-SVN: r230373
2015-11-14ChangeLog: Fix whitespace.Uros Bizjak2-96/+60
* ChangeLog: Fix whitespace. * testsuite/ChangeLog: Ditto. From-SVN: r230372
2015-11-13vbase1.C: XFAIL powerpc*-*-*.David Edelsohn3-3/+9
* g++.dg/init/vbase1.C: XFAIL powerpc*-*-*. * g++.dg/cpp/ucn-1.C: Expect error for dollar sign identifier on AIX. From-SVN: r230371
2015-11-14Daily bump.GCC Administrator1-1/+1
From-SVN: r230370
2015-11-14sh.md (symGOT_load): Don't set stack_chk_guard_p for TARGET_FDPIC.Rich Felker2-1/+6
2015-11-13 Rich Felker <dalias@libc.org> * config/sh/sh.md (symGOT_load): Don't set stack_chk_guard_p for TARGET_FDPIC. From-SVN: r230366
2015-11-13Merge C++ delayed folding branch.Jason Merrill46-318/+1165
* call.c (build_conditional_expr_1, convert_like_real) (convert_arg_to_ellipsis, convert_for_arg_passing): Don't fold. (build_new_op_1, build_over_call, build_cxx_call): Fold for warnings. * class.c (build_base_path, determine_primary_bases) (update_vtable_entry_for_fn, check_bitfield_decl) (layout_nonempty_base_or_field, layout_empty_base) (propagate_binfo_offsets, include_empty_classes) (layout_class_type, build_vbase_offset_vtbl_entries): Use fold_convert. * constexpr.c (cxx_eval_builtin_function_call): Fold away the NOP_EXPR. (cxx_eval_call_expression): Handle MEM_REF. (cxx_eval_pointer_plus_expression): Fold the second operand. (cxx_eval_constant_expression): Handle MEM_REF, UNARY_PLUS_EXPR. (fold_simple_1, fold_simple): New. (maybe_constant_value_1): Factor out from maybe_constant_value. (cv_cache, maybe_constant_value): Cache results. (maybe_constant_init): Handle null input. (potential_constant_expression_1): Handle RESULT_DECL, EMPTY_CLASS_EXPR. * cp-array-notation.c (build_array_notation_ref): Fold operands. * cp-gimplify.c (cp_fold_r, cp_fold): New. (cp_genericize_r): Use fold_convert. Don't fold SIZEOF_EXPR. (cp_genericize): Fold everything. (contains_label_1, contains_label_p): New. (cp_fold, cp_fully_fold): New. * cp-tree.h (class cache_map): New. * cvt.c (cp_convert_to_pointer, ocp_convert): Use convert_to_*_nofold. (cp_convert_and_check): Use cp_fully_fold. (convert, convert_force): Don't fold. * decl.c (fold_sizeof_expr): Change from fold_sizeof_expr_r. (compute_array_index_type): Use cp_fully_fold. (build_enumerator): Use fold_convert. * decl2.c (get_guard_cond, set_guard): Use fold_convert. * init.c (build_zero_init_1): Fold zero-initializers. (build_new_1): Fold nelts calculations. (build_vec_delete_1): Fold conversions. (build_vec_init): Fold maxindex. * parser.c (cp_parser_binary_expression): Fold LHS of || and &&. (cp_parser_question_colon_clause): Fold LHS. * pt.c (convert_nontype_argument): Fold nullptr conversion. * semantics.c (finish_unary_op_expr): Fold for warnings. (handle_omp_array_sections_1): Fold length and low bound. (handle_omp_for_class_iterator): Fold various things. * tree.c (builtin_valid_in_constant_expr_p): Add BUILT_IN_ATOMIC_ALWAYS_LOCK_FREE. (convert_bitfield_to_declared_type): Don't fold. (handle_init_priority_attribute): Fold. (fold_if_not_in_template): Remove. * typeck.c (decay_conversion, build_class_member_access_expr) (build_simple_component_ref, cp_build_array_ref, build_vec_cmp) (cp_pointer_int_sum, pointer_diff): Don't fold. (cp_build_binary_op): Fold for warnings and PMF ops. (cp_build_unary_op): Fold negation of a constant, nothing else. (expand_ptrmemfunc_cst): Fold operations. * typeck2.c (split_nonconstant_init): Fold initializer. (store_init_value): Likewise. (check_narrowing): Try folding. * config-lang.in (gtfiles): Add cp-gimplify.c. From-SVN: r230365
2015-11-13[Patch,tree-optimization]: Add new path Splitting pass on tree ssaAjit Agarwal13-13/+431
representation * Makefile.in (OBJS): Add gimple-ssa-split-paths.o * common.opt (-fsplit-paths): New flag controlling path splitting. * doc/invoke.texi (fsplit-paths): Document. * opts.c (default_options_table): Add -fsplit-paths to -O2. * passes.def: Add split_paths pass. * timevar.def (TV_SPLIT_PATHS): New timevar. * tracer.c: Include "tracer.h" (ignore_bb_p): No longer static. (transform_duplicate): New function, broken out of tail_duplicate. (tail_duplicate): Use transform_duplicate. * tracer.h (ignore_bb_p): Declare (transform_duplicate): Likewise. * tree-pass.h (make_pass_split_paths): Declare. * gimple-ssa-split-paths.c: New file. * gcc.dg/tree-ssa/split-path-1.c: New test. Co-Authored-By: Jeff Law <law@redhat.com> From-SVN: r230364
2015-11-13Add non-folding variants for convert_to_*.Kai Tietz6-79/+221
2015-11-13 Kai Tietz <ktietz70@googlemail.com> Marek Polacek <polacek@redhat.com> Jason Merrill <jason@redhat.com> gcc/ * convert.c (maybe_fold_build1_loc): New. (maybe_fold_build2_loc): New. (convert_to_pointer_1): Split out from convert_to_pointer. (convert_to_pointer_nofold): New. (convert_to_real_1): Split out from convert_to_real. (convert_to_real_nofold): New. (convert_to_integer_1): Split out from convert_to_integer. (convert_to_integer_nofold): New. (convert_to_complex_1): Split out from convert_to_complex. (convert_to_complex_nofold): New. * convert.h: Declare new functions. * tree-complex.c (create_one_component_var): Break up line to avoid sequence point issues. gcc/c-family/ * c-lex.c (interpret_float): Use fold_convert. Co-Authored-By: Jason Merrill <jason@redhat.com> Co-Authored-By: Marek Polacek <polacek@redhat.com> From-SVN: r230359
2015-11-13fold-const.c (fold_convert_const): Fold changing cv-quals on VECTOR_CST.Jason Merrill3-1/+23
* fold-const.c (fold_convert_const): Fold changing cv-quals on VECTOR_CST. From-SVN: r230358
2015-11-13* hash-map.h (hash_map::empty): New.Jason Merrill2-0/+6
From-SVN: r230357
2015-11-13omp-low.c (scan_sharing_clauses): Accept INDEPENDENT, AUTO & SEQ.Nathan Sidwell4-17/+305
gcc/ * gcc/omp-low.c (scan_sharing_clauses): Accept INDEPENDENT, AUTO & SEQ. (oacc_loop_fixed_partitions): Correct return type to bool. (oacc_loop_auto_partitions): New. (oacc_loop_partition): Take mask argument, call oacc_loop_auto_partitions. (execute_oacc_device_lower): Provide mask to oacc_loop_partition. gcc/testsuite/ * c-c++-common/goacc/loop-auto-1.c: New. libgomp/ * testsuite/libgomp.oacc-c-c++-common/loop-auto-1.c: New. From-SVN: r230354
2015-11-13target-supports.exp (check_effective_target_offload_nvptx): New.Nathan Sidwell3-0/+43
* lib/target-supports.exp (check_effective_target_offload_nvptx): New. * gcc.dg/goacc/nvptx-merged-loop.c: New. From-SVN: r230353
2015-11-13re PR fortran/68319 (ICE on using interface with included entry)Steven G. Kargl6-0/+72
2015-11-13 Steven G. Kargl <kargl@gccc.gnu.org> PR fortran/68319 * decl.c (gfc_match_data, gfc_match_entry): Enforce F2008:C1206. * io.c (gfc_match_format): Ditto. * match.c (gfc_match_st_function): Ditto. 2015-11-13 Steven G. Kargl <kargl@gccc.gnu.org> PR fortran/68319 * gfortran.dg/pr68319.f90: New test. From-SVN: r230351
2015-11-13fix ChangeLog entryMichael Meissner1-2/+2
From-SVN: r230345
2015-11-13constraints.md (we constraint): New constraint for 64-bit power9 vector support.Michael Meissner12-45/+901
[gcc] 2015-11-13 Michael Meissner <meissner@linux.vnet.ibm.com> * config/rs6000/constraints.md (we constraint): New constraint for 64-bit power9 vector support. (wL constraint): New constraint for the element in a vector that can be addressed by the MFVSRLD instruction. * config/rs6000/rs6000-protos.h (convert_float128_to_int): Add declaration. (convert_int_to_float128): Likewise. (rs6000_generate_compare): Add support for ISA 3.0 (power9) hardware support for IEEE 128-bit floating point. (rs6000_expand_float128_convert): Likewise. (convert_float128_to_int): Likewise. (convert_int_to_float128): Likewise. * config/rs6000/rs6000.md (UNSPEC_ROUND_TO_ODD): New unspecs for ISA 3.0 hardware IEEE 128-bit floating point. (UNSPEC_IEEE128_MOVE): Likewise. (UNSPEC_IEEE128_CONVERT): Likewise. (FMA_F): Add support for IEEE 128-bit floating point hardware support. (Ff): Add support for DImode. (Fv): Likewise. (any_fix code iterator): New and updated iterators for IEEE 128-bit floating point hardware support. (any_float code iterator): Likewise. (s code attribute): Likewise. (su code attribute): Likewise. (az code attribute): Likewise. (uns code attribute): Likewise. (neg<mode>2, FLOAT128 iterator): Add support for IEEE 128-bit floating point hardware support. (abs<mode>2, FLOAT128 iterator): Likewise. (add<mode>3, IEEE128 iterator): New insns for IEEE 128-bit floating point hardware. (sub<mode>3, IEEE128 iterator): Likewise. (mul<mode>3, IEEE128 iterator): Likewise. (div<mode>3, IEEE128 iterator): Likewise. (copysign<mode>3, IEEE128 iterator): Likewise. (sqrt<mode>2, IEEE128 iterator): Likewise. (neg<mode>2, IEEE128 iterator): Likewise. (abs<mode>2, IEEE128 iterator): Likewise. (nabs<mode>2, IEEE128 iterator): Likewise. (fma<mode>4_hw, IEEE128 iterator): Likewise. (fms<mode>4_hw, IEEE128 iterator): Likewise. (nfma<mode>4_hw, IEEE128 iterator): Likewise. (nfms<mode>4_hw, IEEE128 iterator): Likewise. (extend<SFDF:mode><IEEE128:mode>2_hw): Likewise. (trunc<mode>df2_hw, IEEE128 iterator): Likewise. (trunc<mode>sf2_hw, IEEE128 iterator): Likewise. (fix_fixuns code attribute): Likewise. (float_floatuns code attribute): Likewise. (fix<uns>_<mode>si2_hw): Likewise. (fix<uns>_<mode>di2_hw): Likewise. (float<uns>_<mode>si2_hw): Likewise. (float<uns>_<mode>di2_hw): Likewise. (xscvqp<su>wz_<mode>): Likewise. (xscvqp<su>dz_<mode>): Likewise. (xscv<su>dqp_<mode): Likewise. (ieee128_mfvsrd): Likewise. (ieee128_mfvsrwz): Likewise. (ieee128_mtvsrw): Likewise. (ieee128_mtvsrd): Likewise. (trunc<mode>df2_odd): Likewise. (cmp<mode>_h): Likewise. (128-bit GPR splitters): Don't split a 128-bit move that is a direct move between GPR and vector registers using ISA 3.0 direct move instructions. (<u>mul<mode><dmode>3): Add support for the ISA 3.0 integer multiply-add instruction. * config/rs6000/rs6000.c (rs6000_debug_reg_global): Add ISA 3.0 debugging. (rs6000_init_hard_regno_mode_ok): If ISA 3.0 and 64-bit, enable we constraint. Disable the VSX<->GPR direct move helpers if we have the MFVSRLD and MTVSRDD instructions. (rs6000_secondary_reload_simple_move): Add support for doing vector direct moves directly without additional scratch registers if we have ISA 3.0 instructions. (rs6000_secondary_reload_direct_move): Update comments. (rs6000_output_move_128bit): Add support for ISA 3.0 vector instructions. * config/rs6000/vsx.md (vsx_mov<mode>): Add support for ISA 3.0 direct move instructions. (vsx_movti_64bit): Likewise. (vsx_extract_<mode>): Likewise. * config/rs6000/rs6000.h (VECTOR_ELEMENT_MFVSRLD_64BIT): New macros for ISA 3.0 direct move instructions. (TARGET_DIRECT_MOVE_128): Likewise. (TARGET_MADDLD): Add support for the ISA 3.0 integer multiply-add instruction. * doc/md.texi (RS/6000 constraints): Document we, wF, wG, wL constraints. Update wa documentation to say not to use %x<n> on instructions that only take Altivec registers. [gcc/testsuite] 2015-11-13 Michael Meissner <meissner@linux.vnet.ibm.com> * gcc.target/powerpc/float128-hw.c: New test for IEEE 128-bit hardware floating point support. * gcc.target/powerpc/direct-move-vector.c: New test for 128-bit vector direct move instructions. * gcc.target/powerpc/maddld.c: New test. From-SVN: r230342
2015-11-13pr68306.c (dg-additional-options): Add i?86-*-* target.Uros Bizjak4-3/+9
* gcc.dg/pr68306.c (dg-additional-options): Add i?86-*-* target. * gcc.dg/pr68306-2.c (dg-additional-options): Ditto. * gcc.dg/pr68306-3.c (dg-additional-options): Ditto. From-SVN: r230339
2015-11-13Source range tracking in libcpp and C FE, with bit-packing optimizationDavid Malcolm39-81/+1485
This patch combines: [PATCH 05/10] Add ranges to libcpp tokens (via ad-hoc data, unoptimized) [PATCH 06/10] Track expression ranges in C frontend [PATCH 07/10] Add plugin to recursively dump the source-ranges in a tree (v2) [PATCH 08/10] Wire things up so that libcpp users get token underlines [PATCH 09/10] Delay some resolution of ad-hoc locations, preserving ranges [PATCH 10/10] Compress short ranges into source_location [PATCH] libcpp: add examples to source_location description along with fixes for the nits identified during review. gcc/ChangeLog: * Makefile.in (OBJS): Add gcc-rich-location.o. * diagnostic.c (diagnostic_append_note): Pass line_table to rich_location ctor. (emit_diagnostic): Likewise. (inform): Likewise. (inform_n): Likewise. (warning): Likewise. (warning_at): Likewise. (warning_n): Likewise. (pedwarn): Likewise. (permerror): Likewise. (error): Likewise. (error_n): Likewise. (error_at): Likewise. (sorry): Likewise. (fatal_error): Likewise. (internal_error): Likewise. (internal_error_no_backtrace): Likewise. (source_range::debug): Likewise. * gcc-rich-location.c: New file. * gcc-rich-location.h: New file. * genmatch.c (fatal_at): Pass line_table to rich_location ctor. (warning_at): Likewise. * gimple.h (gimple_set_block): Use set_block function. * input.c (dump_line_table_statistics): Dump stats on how many ranges were optimized vs how many needed ad-hoc table. (write_digit_row): Add "map" param; use its range_bits to calculate the per-character offset. (dump_location_info): Print the range and column bits for each ordinary map. Use the range bits to calculate the per-character offset. Pass the map as a new param to the various calls to write_digit_row. Eliminate uses of ORDINARY_MAP_NUMBER_OF_COLUMN_BITS. * print-tree.c (print_node): Print any source range information. * rtl-error.c (diagnostic_for_asm): Likewise. * toplev.c (general_init): Initialize line_table's default_range_bits. * tree-cfg.c (move_block_to_fn): Likewise. (move_block_to_fn): Likewise. * tree-inline.c (copy_phis_for_bb): Likewise. * tree.c (tree_set_block): Likewise. (get_pure_location): New function. (set_source_range): New functions. (set_block): New function. (set_source_range): New functions. * tree.h (CAN_HAVE_RANGE_P): New. (EXPR_LOCATION_RANGE): New. (EXPR_HAS_RANGE): New. (get_expr_source_range): New inline function. (DECL_LOCATION_RANGE): New. (set_source_range): New decls. (get_decl_source_range): New inline function. gcc/ada/ChangeLog: * gcc-interface/trans.c (Sloc_to_locus): Add line_table param when calling linemap_position_for_line_and_column. gcc/c-family/ChangeLog: * c-common.c (c_fully_fold_internal): Capture existing souce_range, and store it on the result. * c-opts.c (c_common_init_options): Set global_dc->colorize_source_p. gcc/c/ChangeLog: * c-decl.c (warn_defaults_to): Pass line_table to rich_location ctor. * c-errors.c (pedwarn_c99): Likewise. (pedwarn_c90): Likewise. * c-parser.c (set_c_expr_source_range): New functions. (c_token::get_range): New method. (c_token::get_finish): New method. (c_parser_expr_no_commas): Call set_c_expr_source_range on the ret based on the range from the start of the LHS to the end of the RHS. (c_parser_conditional_expression): Likewise, based on the range from the start of the cond.value to the end of exp2.value. (c_parser_binary_expression): Call set_c_expr_source_range on the stack values for TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR. (c_parser_cast_expression): Call set_c_expr_source_range on ret based on the cast_loc through to the end of the expr. (c_parser_unary_expression): Likewise, based on the op_loc through to the end of op. (c_parser_sizeof_expression) Likewise, based on the start of the sizeof token through to either the closing paren or the end of expr. (c_parser_postfix_expression): Likewise, using the token range, or from the open paren through to the close paren for parenthesized expressions. (c_parser_postfix_expression_after_primary): Likewise, for various kinds of expression. * c-tree.h (struct c_expr): Add field "src_range". (c_expr::get_start): New method. (c_expr::get_finish): New method. (set_c_expr_source_range): New decls. * c-typeck.c (parser_build_unary_op): Call set_c_expr_source_range on ret for prefix unary ops. (parser_build_binary_op): Likewise, running from the start of arg1.value through to the end of arg2.value. gcc/cp/ChangeLog: * error.c (pedwarn_cxx98): Pass line_table to rich_location ctor. gcc/fortran/ChangeLog: * error.c (gfc_warning): Pass line_table to rich_location ctor. (gfc_warning_now_at): Likewise. (gfc_warning_now): Likewise. (gfc_error_now): Likewise. (gfc_fatal_error): Likewise. (gfc_error): Likewise. (gfc_internal_error): Likewise. gcc/testsuite/ChangeLog: * gcc.dg/diagnostic-token-ranges.c: New file. * gcc.dg/diagnostic-tree-expr-ranges-2.c: New file. * gcc.dg/plugin/diagnostic-test-expressions-1.c: New file. * gcc.dg/plugin/diagnostic-test-show-trees-1.c: New file. * gcc.dg/plugin/diagnostic_plugin_show_trees.c: New file. * gcc.dg/plugin/diagnostic_plugin_test_show_locus.c (get_loc): Add line_table param when calling linemap_position_for_line_and_column. (test_show_locus): Pass line_table to rich_location ctors. (plugin_init): Remove setting of global_dc->colorize_source_p. * gcc.dg/plugin/diagnostic_plugin_test_tree_expression_range.c: New file. * gcc.dg/plugin/plugin.exp (plugin_test_list): Add diagnostic_plugin_test_tree_expression_range.c, diagnostic-test-expressions-1.c, diagnostic_plugin_show_trees.c, and diagnostic-test-show-trees-1.c. libcpp/ChangeLog: * errors.c (cpp_diagnostic): Pass pfile->line_table to rich_location ctor. (cpp_diagnostic_with_line): Likewise. * include/cpplib.h (struct cpp_token): Update comment for src_loc to indicate that the range of the token is "baked into" the source_location. * include/line-map.h (source_location): Update the descriptive comment to reflect the packing scheme for short ranges, adding worked examples of location encoding. (struct line_map_ordinary): Drop field "column_bits" in favor of field "m_column_and_range_bits"; add field "m_range_bits". (ORDINARY_MAP_NUMBER_OF_COLUMN_BITS): Delete. (location_adhoc_data): Add source_range field. (struct line_maps): Add fields "default_range_bits", "num_optimized_ranges" and "num_unoptimized_ranges". (get_combined_adhoc_loc): Add source_range param. (get_range_from_loc): New declaration. (pure_location_p): New prototype. (COMBINE_LOCATION_DATA): Add source_range param. (SOURCE_LINE): Update for renaming of column_bits. (SOURCE_COLUMN): Likewise. Shift the column right by the map's range_bits. (LAST_SOURCE_LINE_LOCATION): Update for renaming of column_bits. (linemap_position_for_line_and_column): Add line_maps * params. (rich_location::rich_location): Likewise. * lex.c (_cpp_lex_direct): Capture the range of the token, baking it into token->src_loc via a call to COMBINE_LOCATION_DATA. * line-map.c (LINE_MAP_MAX_COLUMN_NUMBER): Reduce from 1U << 17 to 1U << 12. (location_adhoc_data_hash): Add the src_range into the hash value. (location_adhoc_data_eq): Require equality of the src_range values. (can_be_stored_compactly_p): New function. (get_combined_adhoc_loc): Add src_range param, and store it, via a bit-packing scheme for short ranges, otherwise within the lookaside table. Remove the requirement that data is non-NULL. (get_range_from_adhoc_loc): New function. (get_range_from_loc): New function. (pure_location_p): New function. (linemap_add): Ensure that start_location has zero for the range_bits, unless we're past LINE_MAP_MAX_LOCATION_WITH_COLS. Initialize range_bits to zero. Assert that the start_location is "pure". (linemap_line_start): Assert that the column_and_range_bits >= range_bits. Update determinination of whether we need to start a new map using the effective column bits, without the range bits. Use the set's default_range_bits in new maps, apart from those with column_bits == 0, which should also have 0 range_bits. Increase the column bits for new maps by the range bits. When adding lines to an existing map, use set->highest_line directly rather than offsetting highest by SOURCE_COLUMN. Add assertions to sanity-check the return value. (linemap_position_for_column): Offset to_column by range_bits. Update set->highest_location if necessary. (linemap_position_for_line_and_column): Add line_maps * param. Update the calculation to offset the column by range_bits, and conditionalize it on being <= LINE_MAP_MAX_LOCATION_WITH_COLS. Bound it by LINEMAPS_MACRO_LOWEST_LOCATION. Update set->highest_location if necessary. (linemap_position_for_loc_and_offset): Handle ad-hoc locations; pass "set" to linemap_position_for_line_and_column. (linemap_macro_map_loc_unwind_toward_spelling): Add line_maps param. Handle ad-hoc locations. (linemap_location_in_system_header_p): Pass on "set" to call to linemap_macro_map_loc_unwind_toward_spelling. (linemap_macro_loc_to_spelling_point): Retain ad-hoc locations. Pass on "set" to call to linemap_macro_map_loc_unwind_toward_spelling. (linemap_resolve_location): Retain ad-hoc locations. Pass on "set" to call to linemap_macro_map_loc_unwind_toward_spelling. (linemap_unwind_toward_expansion): Pass on "set" to call to linemap_macro_map_loc_unwind_toward_spelling. (linemap_expand_location): Extract the data pointer before extracting the location. (rich_location::rich_location): Add line_maps param; use it to extract the range from the source_location. * location-example.txt: Regenerate, showing new representation. From-SVN: r230331
2015-11-13PR/67682, break SLP groups up if only some elements matchAlan Lawrence7-6/+230
gcc/: * tree-vect-slp.c (vect_split_slp_store_group): New. (vect_analyze_slp_instance): During basic block SLP, recurse on subgroups if vect_build_slp_tree fails after 1st vector. gcc/testsuite/: * gcc.dg/vect/bb-slp-7.c (main1): Make subgroups non-isomorphic. * gcc.dg/vect/bb-slp-subgroups-1.c: New. * gcc.dg/vect/bb-slp-subgroups-2.c: New. * gcc.dg/vect/bb-slp-subgroups-3.c: New. From-SVN: r230330
2015-11-13re PR target/65837 ([arm-linux-gnueabihf] lto1 target specific builtin not ↵Christian Bruel3-20/+28
available) 2015-11-13 Christian Bruel <christian.bruel@st.com> PR target/65837 * config/arm/arm.c (arm_option_override): Move NEON check... (arm_option_check_internal): here (arm_file_start): Move .fpu print... (arm_declare_function_name): here (arm_option_print): Dump current fpu name. * config/arm/arm.opt (arm_fpu_index): Mark Save. From-SVN: r230327
2015-11-13[combine] Don't transform sign and zero extends inside multsKyrylo Tkachov4-0/+67
2015-11-13 Segher Boessenkool <segher@kernel.crashing.org> Kyrylo Tkachov <kyrylo.tkachov@arm.com> * combine.c (subst): Don't substitute or simplify when handling register-wise widening multiply. (force_to_mode): Likewise. * gcc.target/aarch64/umaddl_combine_1.c: New test. From-SVN: r230326
2015-11-13nvptx.c (nvptx_generate_vector_shuffle): Deal with complex types.Nathan Sidwell2-12/+42
gcc/ * config/nvptx/nvptx.c (nvptx_generate_vector_shuffle): Deal with complex types. libgomp/ * testsuite/libgomp.oacc-c-c++-common/reduction-cplx-dbl.c: New. * testsuite/libgomp.oacc-c-c++-common/reduction-cplx-flt.c: New. From-SVN: r230325
2015-11-13PR68264: Use unordered comparisons for tree-call-cdce.cRichard Sandiford4-22/+141
As reported in PR 68264, tree-call-cdce.c should be using unordered comparisons for the range checks, in order to avoid raising FE_INVALID for quiet NaNs. Tested on x86_64-linux-gnu and aarch64-linux-gnu. The test failed on aarch64-linux-gnu before the patch, but it didn't on x86_64-linux-gnu because it used unordered comparisons for the previous ordered tree codes. gcc/ PR tree-optimization/68264 * tree-call-cdce.c (gen_one_condition): Update commentary. (gen_conditions_for_pow_int_base): Invert the sense of the tests passed to gen_one_condition. (gen_conditions_for_domain): Likewise. Use unordered comparisons. (shrink_wrap_one_built_in_call): Invert the sense of the tests, using EDGE_FALSE_VALUE for edges to the call block and EDGE_TRUE_VALUE for the others. gcc/testsuite/ PR tree-optimization/68264 * gcc.dg/torture/pr68264.c: New test. From-SVN: r230323
2015-11-13re PR c/68320 (internal compiler error: in declspecs_add_type)Marek Polacek4-4/+81
PR c/68320 * c-parser.c (c_parser_for_statement): Treat unknown tokens as IDs. * gcc.dg/pr68320.c: New test. From-SVN: r230322
2015-11-13gimplify.c (oacc_default_clause): Use inform for enclosing scope.Nathan Sidwell4-3/+12
gcc/ * gimplify.c (oacc_default_clause): Use inform for enclosing scope. gcc/testsuite/ * c-c++-common/goacc/data-default-1.c: Correct expected From-SVN: r230321