1. 03 Dec, 2015 14 commits
    • Add an rsqrt_optab and IFN_RSQRT internal function · ee62a5a6
      All current uses of builtin_reciprocal convert 1.0/sqrt into rsqrt.
      This patch adds an rsqrt optab and associated internal function for
      that instead.  We can then pick up the vector forms of rsqrt automatically,
      fixing an AArch64 regression from my internal_fn patches.
      
      With that change, builtin_reciprocal only needs to handle target-specific
      built-in functions.  I've restricted the hook to those since, if we need
      a reciprocal of another standard function later, I think there should be
      a strong preference for adding a new optab and internal function for it,
      rather than hiding the code in a backend.
      
      Three targets implement builtin_reciprocal: aarch64, i386 and rs6000.
      i386 and rs6000 already used the obvious rsqrt<mode>2 pattern names
      for the instructions, so they pick up the new code automatically.
      aarch64 needs a slight rename.
      
      mn10300 is unusual in that its native operation is rsqrt, and
      sqrt is approximated as 1.0/rsqrt.  The port also uses rsqrt<mode>2
      for the rsqrt pattern, so after the patch we now pick it up as a native
      operation.
      
      Two other ports define rsqrt patterns: sh and v850.  AFAICT these
      patterns aren't currently used, but I think the patch does what the
      authors of the patterns would have expected.  There's obviously some
      risk of fallout though.
      
      Tested on x86_64-linux-gnu, aarch64-linux-gnu, arm-linux-gnueabihf
      (as a target without the hooks) and powerpc64-linux-gnu.
      
      gcc/
      	* internal-fn.def (RSQRT): New function.
      	* optabs.def (rsqrt_optab): New optab.
      	* doc/md.texi (rsqrtM2): Document.
      	* target.def (builtin_reciprocal): Replace gcall argument with
      	a function decl.  Restrict hook to machine functions.
      	* doc/tm.texi: Regenerate.
      	* targhooks.h (default_builtin_reciprocal): Update prototype.
      	* targhooks.c (default_builtin_reciprocal): Likewise.
      	* tree-ssa-math-opts.c: Include internal-fn.h.
      	(internal_fn_reciprocal): New function.
      	(pass_cse_reciprocals::execute): Call it, and build a call to an
      	internal function on success.  Only call targetm.builtin_reciprocal
      	for machine functions.
      	* config/aarch64/aarch64-protos.h (aarch64_builtin_rsqrt): Remove
      	second argument.
      	* config/aarch64/aarch64-builtins.c (aarch64_expand_builtin_rsqrt):
      	Rename aarch64_rsqrt_<mode>2 to rsqrt<mode>2.
      	(aarch64_builtin_rsqrt): Remove md_fn argument and only handle
      	machine functions.
      	* config/aarch64/aarch64.c (use_rsqrt_p): New function.
      	(aarch64_builtin_reciprocal): Replace gcall argument with a
      	function decl.  Use use_rsqrt_p.  Remove optimize_size check.
      	Only handle machine functions.  Update call to aarch64_builtin_rsqrt.
      	(aarch64_optab_supported_p): New function.
      	(TARGET_OPTAB_SUPPORTED_P): Define.
      	* config/aarch64/aarch64-simd.md (aarch64_rsqrt_<mode>2): Rename to...
      	(rsqrt<mode>2): ...this.
      	* config/i386/i386.c (use_rsqrt_p): New function.
      	(ix86_builtin_reciprocal): Replace gcall argument with a
      	function decl.  Use use_rsqrt_p.  Remove optimize_insn_for_size_p
      	check.  Only handle machine functions.
      	(ix86_optab_supported_p): Handle rsqrt_optab.
      	* config/rs6000/rs6000.c (TARGET_OPTAB_SUPPORTED_P): Define.
      	(rs6000_builtin_reciprocal): Replace gcall argument with a
      	function decl.  Remove optimize_insn_for_size_p check.
      	Only handle machine functions.
      	(rs6000_optab_supported_p): New function.
      
      From-SVN: r231229
      Richard Sandiford committed
    • Fix some issues with the ROP patch (PR 68471, 68472) · 47e16c6a
      	PR target/68471
      	PR target/68472
      	* config/i386/i386.c (ix86_mitigate_rop): Don't call
      	compute_bb_for_insn again.  Call df_insn_rescan_all.
      	* config/i386/i386.md (set_got_rex64): Override modrm_class.
      
      	* regrename.c (build_def_use): Ignore stack regs if regstack_completed.
      
      testsuite/
      	* gcc.target/i386/rop1.c: New test.
      
      From-SVN: r231228
      Bernd Schmidt committed
    • nvptx-protos.h (npvptx_section_from_addr_space): Delete. · 9a863523
      	gcc/
      	* config/nvptx/nvptx-protos.h (npvptx_section_from_addr_space):	Delete.
      	* config/nvptx/nvptx.c (enum nvptx_data_area): New.
      	(SYMBOL_DATA_AREA, SET_SYMBOL_DATA_AREA): New defines.
      	(nvptx_option_override): Set data ares for worker vars.
      	(nvptx_addr_space_from_sym): Delete.
      	(nvptx_encode_section_info): New.
      	(section_for_sym, section_for_decl): New.
      	(nvptx_maybe_convert_symbolic_operand): Get data area from symbol
      	flags,
      	(nvptx_section_from_addr_space): Delete.
      	(nvptx_section_for_decl): Delete.
      	(nvptx_output_aligned, nvptx_declare_object_name,
      	nvptx_assemble_undefined_decl): Use section_for_decl, remove
      	unnecessary checks.
      	(nvptx_print_operand): Add 'D', adjust 'A'.
      	(nvptx_expand_worker_addr): Adjust unspec generation.
      	(TARGET_ENCODE_SECTION_INFO): Override.
      	* config/nvptx/nvptx.h (ADDR_SPACE_GLOBAL, ADDR_SPACE_SHARED,
      	ADDR_SPACE_CONST, ADDR_SPACE_LOCAL, ADDR_SPACE_PARAM): Delete.
      	* config/nvptx/nvptx.md (UNSPEC_FROM_GLOBAL, UNSPEC_FROM_LOCAL,
      	UNSPEC_FROM_PARAM, UNSPEC_FROM_SHARED, UNSPEC_FROM_CONST,
      	UNSPEC_TO_GLOBAL, UNSPEC_TO_LOCAL, UNSPEC_TO_PARAM,
      	UNSPEC_TO_SHARED, UNSPEC_TO_CONST): Delete.
      	(UNSPEC_TO_GENERIC): New.
      	(nvptx_register_or_symbolic_operand): Delete.
      	(cvt_code, cvt_name, cvt_str): Delete.
      	(convaddr_<cvt_name><mode> [P]): Delete.
      	(convaddr_<mode> [P]): New.
      
      	gcc/testsuite/
      	* gcc.target/nvptx/decl.c: New.
      	* gcc.target/nvptx/uninit-decl.c: Robustify regexps.
      
      From-SVN: r231227
      Nathan Sidwell committed
    • [RTL-ifcvt] PR rtl-optimization/68624: Clean up logic that checks for clobbering… · 1986d679
      [RTL-ifcvt] PR rtl-optimization/68624: Clean up logic that checks for clobbering conflicts across basic blocks
      
      	PR rtl-optimization/68624
      	* ifcvt.c (noce_try_cmove_arith): Check clobbers of temp regs in both
      	blocks if they exist and simplify the logic choosing the order to emit
      	them in.
      
      	* gcc.c-torture/execute/pr68624.c: New test.
      
      From-SVN: r231226
      Kyrylo Tkachov committed
    • re PR tree-optimization/66051 (can't vectorize reductions inside an SLP group) · 97a1a642
      2015-12-03  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/66051
      	* tree-vect-slp.c (vect_build_slp_tree_1): Remove restriction
      	on load group size.  Do not pass in vectorization_factor.
      	(vect_transform_slp_perm_load): Do not require any permute support.
      	(vect_build_slp_tree): Do not pass in vectorization factor.
      	(vect_analyze_slp_instance): Do not compute vectorization
      	factor estimate.  Use vector size instead of vectorization factor
      	estimate to split store groups for BB vectorization.
      
      	* gcc.dg/vect/slp-42.c: New testcase.
      
      From-SVN: r231225
      Richard Biener committed
    • cfgexpand.c (expand_gimple_stmt_1): Return statement with DECL as return value… · b5be36b1
      cfgexpand.c (expand_gimple_stmt_1): Return statement with DECL as return value is allowed to have NULL bounds.
      
      gcc/
      
      	* cfgexpand.c (expand_gimple_stmt_1): Return statement with
      	DECL as return value is allowed to have NULL bounds.
      
      From-SVN: r231224
      Ilya Enkovich committed
    • Guard isl_ast_op_zdiv_r usage with HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS · 71819f45
      2015-12-03  Tom de Vries  <tom@codesourcery.com>
      
      	* graphite-isl-ast-to-gimple.c (binary_op_to_tree)
      	(gcc_expression_from_isl_expr_op): Guard isl_ast_op_zdiv_r usage with
      	HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS.
      
      From-SVN: r231223
      Tom de Vries committed
    • re PR tree-optimization/67800 (Missed vectorization opportunity on x86… · b308d872
      re PR tree-optimization/67800 (Missed vectorization opportunity on x86 (DOT_PROD_EXPR in non-reduction))
      
      2015-12-03  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/67800
      	PR tree-optimization/68333
      	* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Restore
      	restriction to reduction contexts but allow SLP reductions as well.
      	(vect_recog_sad_pattern): Likewise.
      	(vect_recog_widen_sum_pattern): Likewise.
      
      	* gcc.target/i386/vect-pr67800.c: New testcase.
      
      From-SVN: r231221
      Richard Biener committed
    • re PR tree-optimization/68639 (ICE: Floating point exception) · 8349b024
      2015-12-03  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/68639
      	* tree-vect-data-refs.c (dr_group_sort_cmp): Split groups
      	belonging to different loops.
      	(vect_analyze_data_ref_accesses): Likewise.
      
      	* gfortran.fortran-torture/compile/pr68639.f90: New testcase.
      
      From-SVN: r231220
      Richard Biener committed
    • ipa-pure-const.c (ignore_edge_for_pure_const): New function. · d8e3e8a5
      	* ipa-pure-const.c (ignore_edge_for_pure_const): New function.
      	(propagate_pure_const): Use it; fix comments and optimize loops.
      
      From-SVN: r231219
      Jan Hubicka committed
    • ipa-pure-const.c (ignore_edge): Rename to ... · 9644e52a
      
      	* ipa-pure-const.c (ignore_edge): Rename to ...
      	(ignore_edge_for_nothrow) ... this one; also ignore eges to
      	interposable functions or ones that can not throw.
      	(propagate_nothrow): Fix handling of availability.
      
      From-SVN: r231218
      Jan Hubicka committed
    • re PR c++/68184 (Exception from a virtual function does not get caught) · 89bbe9ba
      
      	PR ipa/68184
      	* g++.dg/torture/pr68184.C: New testcase.
      	* cgraphunit.c (cgraph_node::analyze): Set can_throw_external.
      
      From-SVN: r231217
      Jan Hubicka committed
    • Daily bump. · eaa728e3
      From-SVN: r231216
      GCC Administrator committed
  2. 02 Dec, 2015 26 commits
    • re PR preprocessor/57580 (Repeated _Pragma message directives in macro causes problems) · 6eb4a537
      	PR preprocessor/57580
      	* c-ppoutput.c (print): Change printed field to bool.
      	Move src_file last for smaller padding.
      	(init_pp_output): Set print.printed to false instead of 0.
      	(scan_translation_unit): Fix up formatting.  Set print.printed
      	to true after printing something other than newline.
      	(scan_translation_unit_trad): Set print.printed to true instead of 1.
      	(maybe_print_line_1): Set print.printed to false instead of 0.
      	(print_line_1): Likewise.
      	(do_line_change): Set print.printed to true instead of 1.
      	(cb_define, dump_queued_macros, cb_include, cb_def_pragma,
      	dump_macro): Set print.printed to false after printing newline.
      
      	* c-c++-common/cpp/pr57580.c: New test.
      	* c-c++-common/gomp/pr57580.c: New test.
      
      From-SVN: r231213
      Jakub Jelinek committed
    • handle missing isl_ast_expr · 49ed2fa4
      From ISL's documentation, isl_ast_op_zdiv_r is equal to zero iff the remainder
      on integer division is zero.  Code generate a modulo operation for that.
      
      	* graphite-isl-ast-to-gimple.c (binary_op_to_tree): Handle isl_ast_op_zdiv_r.
              (gcc_expression_from_isl_expr_op): Same.
      
      	* gcc.dg/graphite/id-28.c: New.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r231212
      Aditya Kumar committed
    • do not insert code outside the generated region · 1a67d2cd
      on the testcase we used to generate code in the function entry bb_0,
      and that choked the cfg verifier.
      
      	* graphite-isl-ast-to-gimple.c (copy_bb_and_scalar_dependences): Check
      	that insertion point is still in the region.
      
      	* gfortran.dg/graphite/id-26.f03: New.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r231211
      Aditya Kumar committed
    • Allow running the testsuite in C++1z mode. · fa26da22
      gcc/cp/
      	* Make-lang.in (check-c++1z, check-c++-all): New.
      gcc/testsuite/
      	* lib/g++.exp: Handle --stds= option.
      	* lib/g++-dg.exp (g++-dg-runtest): Use it.
      
      From-SVN: r231209
      Jason Merrill committed
    • check.c (gfc_check_event_query): New function. · 5df445a2
      2015-12-02  Tobias Burnus  <burnus@net-b.de>
      	    Alessandro Fanfarillo <fanfarillo.gcc@gmail.com>
      
      	* check.c (gfc_check_event_query): New function.
      	* dump-parse-tree.c (show_code_node): Handle EXEC_EVENT_POST,
      	EXEC_EVENT_WAIT.
      	* expr.c (gfc_check_vardef_context): New check for event variables
      	definition.
      	* gfortran.h (gfc_statement): Add ST_EVENT_POST, ST_EVENT_WAIT.
      	(gfc_isym_id): GFC_ISYM_EVENT_QUERY.
      	(struct symbol_attribute): New field.
      	(gfc_exec_op): Add EXEC_EVENT_POST and EXEC_EVENT_WAIT.
      	* gfortran.texi: Document about new events functions and minor
      	changes.
      	* interface.c (compare_parameter): New check.
      	(gfc_procedure_use): New check for explicit procedure interface.
      	(add_subroutines): Add event_query.
      	* intrinsic.h (gfc_check_event_query,gfc_resolve_event_query):
      	New prototypes.
      	* iresolve.c (gfc_resolve_event_query): New function.
      	* iso-fortran-env.def (event_type): New type.
      	* match.c (event_statement,gfc_match_event_post,gfc_match_event_wait):
      	New functions.
      	(gfc_match_name): New event post and event wait.
      	* match.h (gfc_match_event_post,gfc_match_event_wait):
      	New prototypes.
      	* module.c (ab_attribute): Add AB_EVENT_COMP.
      	(attr_bits): Likewise.
      	(mio_symbol_attribute): Handle event_comp attribute.
      	* parse.c (decode_statement): Add ST_EVENT_POST, ST_EVENT_WAIT.
      	(next_statement): Add ST_EVENT_POST, ST_EVENT_WAIT.
      	(gfc_ascii_statement): Add ST_EVENT_POST, ST_EVENT_WAIT.
      	(parse_derived): Check for event_type components.
      	* resolve.c (resolve_allocate_expr): Check for event variable def.
      	(resolve_lock_unlock): Renamed to resolve_lock_unlock_event. It
      	includes logic for locks and events.
      	(gfc_resolve_code): Call it.
      	(gfc_resolve_symbol): New check for event variable to be a corray.
      	* st.c (gfc_free_statement): Handle new EXEC_EVENT_POST and
      	EXEC_EVENT_WAIT.
      	* trans-decl.c (gfor_fndecl_caf_event_post,gfor_fndecl_caf_event_wait,
      	gfor_fndecl_caf_event_query): New global variables.
      	(generate_coarray_sym_init): Checking for event_type.
      	(gfc_conv_procedure_call): Check for C bind attribute.
      	* trans-intrinsic.c (conv_intrinsic_event_query): New function.
      	(conv_intrinsic_move_alloc): Call it.
      	* trans-stmt.c (gfc_trans_lock_unlock): Passing address
      	of actual argument.
      	(gfc_trans_sync): Likewise.
      	(gfc_trans_event_post_wait): New function.
      	* trans-stmt.h (gfc_trans_event_post_wait): New prototype.
      	* trans-types.c (gfc_get_derived_type): Integer_kind as event_type.
      	* trans.c (gfc_allocate_using_lib): New argument and logic for events.
      	(gfc_allocate_allocatable): Passing new argument.
      	(trans_code): Handle EXEC_EVENT_POST, EXEC_EVENT_WAIT.
      	* trans.h (gfc_coarray_type): New elements.
      	(gfor_fndecl_caf_event_post,gfor_fndecl_caf_event_wait,
      	gfor_fndecl_caf_event_query): Declare them.
      
      2015-12-02  Tobias Burnus  <burnus@net-b.de>
      	    Alessandro Fanfarillo <fanfarillo.gcc@gmail.com>
      
      	* gfortran.dg/coarray/event_1.f90: New.
      	* gfortran.dg/coarray/event_2.f90: New.
      
      Co-Authored-By: Alessandro Fanfarillo <fanfarillo.gcc@gmail.com>
      
      From-SVN: r231208
      Tobias Burnus committed
    • fix PR68550: do not handle ISL loop peeled statements · ca377fc3
      In case ISL did some loop peeling, like this:
      
        S_8(0);
        for (int c1 = 1; c1 <= 5; c1 += 1) {
          S_8(c1);
        }
        S_8(6);
      
      we should not copy loop-phi nodes in S_8(0) or in S_8(6).
      
      	PR tree-optimization/68550
      	* graphite-isl-ast-to-gimple.c (copy_loop_phi_nodes): Add dump.
      	(copy_bb_and_scalar_dependences): Do not code generate loop peeled
      	statements.
      
      	* gfortran.dg/graphite/pr68550-1.f90: New.
      	* gfortran.dg/graphite/pr68550-2.f90: New.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r231206
      Aditya Kumar committed
    • re PR c/68513 (ICE in gimplify_expr, at gimplify.c:8832, c_maybe_const_expr in IL) · c297b7cd
      	PR c/68513
      	* gcc.dg/pr68513.c: New test.
      
      From-SVN: r231205
      Marek Polacek committed
    • re PR fortran/63861 (OpenACC coarray ICE (also with OpenMP?)) · 2f9bcf53
      	gcc/fortran/
      	PR fortran/63861
      	* openmp.c (gfc_match_omp_clauses): Allow subarrays for acc reductions.
      	(resolve_omp_clauses): Error on any acc reductions on arrays.
      
      	gcc/testsuite/
      	* gfortran.dg/goacc/array-reduction.f90: New test.
      	* gfortran.dg/goacc/assumed.f95: Update expected diagnostics.
      	* gfortran.dg/goacc/coarray.f95: Likewise.
      	* gfortran.dg/goacc/coarray_2.f90: Likewise.
      	* gfortran.dg/goacc/reduction-2.f95: Likewise.
      	* gfortran.dg/goacc/reduction.f95: Likewise.
      
      From-SVN: r231204
      Cesar Philippidis committed
    • Fix c++/67337 (segfault in mangle.c) · e7fc41a7
      	PR c++/67337
      	* mangle.c (write_template_prefix): Guard against context==NULL.
      
      From-SVN: r231203
      Markus Trippelsdorf committed
    • configure.ac: Check assembler support for R_PPC64_ENTRY relocation. · 157bb85d
      	* configure.ac: Check assembler support for R_PPC64_ENTRY relocation.
      	* configure: Regenerate.
      	* config.in: Regenerate.
      	* config/rs6000/rs6000.c (rs6000_global_entry_point_needed_p): New
      	function.
      	(rs6000_output_function_prologue): Use it instead of checking
      	cfun->machine->r2_setup_needed.  Use internal labels instead of
      	GNU as local label extension.  Handle ELFv2 large code model.
      	(rs6000_output_mi_thunk): Do not set cfun->machine->r2_setup_needed.
      	(rs6000_elf_declare_function_name): Handle ELFv2 large code model.
      
      From-SVN: r231202
      Ulrich Weigand committed
    • re PR target/68647 (__builtin_popcountll doesn't generate popcnt instructions… · 8923e02e
      re PR target/68647 (__builtin_popcountll doesn't generate popcnt instructions when targeting -mpopcnt on x86_32)
      
      	PR target/68647
      	* optabs.c (expand_doubleword_popcount, expand_doubleword_parity):
      	New functions.
      	(expand_unop): Use them.
      
      	* gcc.target/i386/pr68647.c: New test.
      
      From-SVN: r231201
      Jakub Jelinek committed
    • re PR c++/68653 (ICE: in nonnull_arg_p, at tree.c:13853) · d6221ad4
      	PR c++/68653
      	* tree.c (nonnull_arg_p): Allow OFFSET_TYPE.
      
      	* g++.dg/warn/nonnull3.C: New test.
      
      From-SVN: r231200
      Marek Polacek committed
    • re PR go/66147 (go fails to cross build) · 105b682e
      ./:	PR go/66147
      	* Makefile.tpl (HOST_EXPORTS): Add XGCC_FLAGS_FOR_TARGET.
      	* Makefile.in: Regenerate.
      gotools/:
      	PR go/66147
      	* Makefile.am (GOCOMPILER): In NATIVE case, add
      	$(XGCC_FLAGS_FOR_TARGET).
      
      From-SVN: r231199
      Ian Lance Taylor committed
    • Do constant folding in warn_* functions. · f479b43d
      gcc/c-family/
      	* c-common.c (fold_for_warn): New.
      	(warn_logical_operator, warn_tautological_cmp)
      	(check_function_arguments_recurse, maybe_warn_bool_compare): Use it.
      gcc/cp/
      	* call.c (build_new_op_1): Don't fold arguments to
      	warn_logical_operator or maybe_warn_bool_compare.
      
      From-SVN: r231198
      Jason Merrill committed
    • Introduce cp_fold_rvalue. · 7426fcc8
      	* cp-gimplify.c (cp_fold_maybe_rvalue, cp_fold_rvalue): New.
      	(c_fully_fold): Use cp_fold_rvalue.
      	(cp_fold): Use them for rvalue operands.
      
      From-SVN: r231197
      Jason Merrill committed
    • Define c_fully_fold separately for C and C++. · 4250754e
      gcc/c-family/
      	* c-common.c (c_disable_warnings, c_enable_warnings, c_fully_fold)
      	(c_fully_fold_internal, decl_constant_value_for_optimization):
      	Move to c/c-fold.c.
      	* c-common.h: Don't declare decl_constant_value_for_optimization.
      gcc/c/
      	* c-fold.c (c_disable_warnings, c_enable_warnings, c_fully_fold)
      	(c_fully_fold_internal, decl_constant_value_for_optimization):
      	Move from c-common.c.
      	* c-tree.h: Declare decl_constant_value_for_optimization.
      	* Make-lang.in (C_AND_OBJC_OBJS): Add c-fold.o.
      gcc/cp/
      	* cp-gimplify.c (c_fully_fold): Define.
      
      From-SVN: r231196
      Jason Merrill committed
    • * cp-gimplify.c (cp_fold): Use fold_build*. · e9ea372d
      From-SVN: r231195
      Jason Merrill committed
    • Fix TYPE_MAIN_VARIANT construction for arrays of qualified typedefs (PR c/68162). · e9e32ee6
      PR c/68162 reports a spurious warning about incompatible types
      involving arrays of const double, constructed in one place using a
      typedef for const double and in another place literally using const
      double.
      
      The problem is that the array of the typedef was incorrectly
      constructed without a TYPE_MAIN_VARIANT being an array of unqualified
      elements as it should be (though it seems some more recent change
      resulted in this producing incorrect diagnostics, likely the support
      for C++-style handling of arrays of qualified type).  This patch fixes
      the logic in grokdeclarator to determine first_non_attr_kind, which is
      used to determine whether it is necessary to use the TYPE_MAIN_VARIANT
      of the type in the declaration specifiers.
      
      However, fixing that logic introduces a failure of
      gcc.dg/debug/dwarf2/pr47939-4.c, a test introduced along with
      first_non_attr_kind.  Thus, it is necessary to track the original
      qualified typedef when qualifying an array type, to use it rather than
      a newly-constructed type, to avoid regressing regarding typedef names
      in debug info.  This is done along lines I suggested in
      <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47939#c6>: track the
      original type and the number of levels of array indirection at which
      it appears, and, in possibly affected cases, pass extra arguments to
      c_build_qualified_type (with default arguments to avoid needing to
      pass those extra arguments explicitly everywhere).  Given Richard's
      recent fix to dwarf2out.c, this allows the C bug to be fixed without
      causing debug information regressions.
      
      Bootstrapped with no regressions on x86_64-pc-linux-gnu.
      
      gcc/c:
      	PR c/68162
      	* c-decl.c (grokdeclarator): Set first_non_attr_kind before
      	following link from declarator to next declarator.  Track original
      	qualified type and pass it to c_build_qualified_type.
      	* c-typeck.c (c_build_qualified_type): Add arguments
      	orig_qual_type and orig_qual_indirect.
      
      gcc/c-family:
      	PR c/68162
      	* c-common.h (c_build_qualified_type): Add extra default
      	arguments.
      
      gcc/cp:
      	PR c/68162
      	* tree.c (c_build_qualified_type): Add extra arguments.
      
      gcc/testsuite:
      	PR c/68162
      	* gcc.dg/pr68162-1.c: New test.
      
      From-SVN: r231194
      Joseph Myers committed
    • configure.ac: Move AM_ENABLE_MULTILIB before GCC_LIBSTDCXX_RAW_CXX_FLAGS. · 701fa326
      2015-12-02  Matthias Klose  <doko@ubuntu.com>
      
              * configure.ac: Move AM_ENABLE_MULTILIB before
              GCC_LIBSTDCXX_RAW_CXX_FLAGS.
              * configure: Regenerate.
      
      From-SVN: r231193
      Matthias Klose committed
    • nvptx.c (enum nvptx_shuffle_kind): New. · 59263259
      	* config/nvptx/nvptx.c (enum nvptx_shuffle_kind): New.  Absorb
      	SHUFFLE defines.
      	(nvptx_gen_shuffle, nvptx_print_operand, nvptx_expand_shuffle): Adjust.
      
      From-SVN: r231192
      Nathan Sidwell committed
    • fix invalid bounds on array refs · 2e733703
      While enabling graphite in -O3 we found a Fortran testcase that fails
      because the max of the type domain is -1.  We used to add that as a constraint
      to the elements accessed by the array, leading to a unfeasible constraint:
      0 <= i <= -1.  Having that constraint, drops the data reference as that says
      that there are no elements accessed in the array.
      
      	* graphite-dependences.c (scop_get_reads): Add extra dumps.
      	(scop_get_must_writes): Same.
      	(scop_get_may_writes): Same.
      	(compute_deps): Same.
      	* graphite-sese-to-poly.c (bounds_are_valid): New.
      	(pdr_add_data_dimensions): Call bounds_are_valid.
      
      	* gfortran.dg/graphite/run-id-3.f90: New.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r231191
      Aditya Kumar committed
    • rename flag_loop_optimize_isl to flag_loop_nest_optimize · 84c36240
      	* common.opt (flag_loop_optimize_isl): Renamed flag_loop_nest_optimize.
      	* graphite-poly.c (apply_poly_transforms): Same.
      	* graphite.c (gate_graphite_transforms): Same.
      	* toplev.c (process_options): Same.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r231190
      Aditya Kumar committed
    • re PR c++/68290 (g++.dg/concepts/auto1.C FAILs) · f4886d80
      	PR c++/68290
      	* constraint.cc (make_constrained_auto): Move to...
      	* pt.c (make_auto_1): Add set_canonical parameter and set
      	TYPE_CANONICAL on the type only if it is true.
      	(make_decltype_auto): Adjust call to make_auto_1.
      	(make_auto): Likewise.
      	(splice_late_return_type): Likewise.
      	(make_constrained_auto): ...here.  Call make_auto_1 instead of
      	make_auto and pass false.  Set TYPE_CANONICAL directly.
      
      From-SVN: r231189
      Eric Botcazou committed
    • mips.c (mips_emit_probe_stack_range): Adjust. · f74e6550
      	* config/mips/mips.c (mips_emit_probe_stack_range): Adjust.
      	(mips_output_probe_stack_range): Rotate the loop and simplify.
      
      From-SVN: r231188
      Eric Botcazou committed
    • aarch64.md: New pattern. · 202d0c11
      2015-12-02  David Sherwood  <david.sherwood@arm.com>
      
          gcc/
      	* config/aarch64/aarch64.md: New pattern.
      	* config/aarch64/aarch64-simd.md: Likewise.
      	* config/aarch64/iterators.md: New unspecs, iterators.
          gcc/testsuite
      	* gcc.target/aarch64/fmaxmin.c: New test.
      
      From-SVN: r231187
      David Sherwood committed
    • Track indirect calls for call site information in debug info · f2834b5d
      gcc/ChangeLog:
      
      	* dwarf2out.c (dwar2out_var_location): In addition to notes,
      	process indirect calls whose target is compile-time known.
      	Enhance pattern matching to get the SYMBOL_REF they embed.
      	(gen_subprogram_die): Handle such calls.
      	* final.c (final_scan_insn): For call instructions, invoke the
      	var_location debug hook only after the call has been emitted.
      
      From-SVN: r231185
      Pierre-Marie de Rodat committed