1. 15 Mar, 2018 12 commits
  2. 14 Mar, 2018 22 commits
    • re PR target/83451 (FAIL: gfortran.dg/matmul_10.f90 -O3 -fomit-frame-pointer… · 82e18598
      re PR target/83451 (FAIL: gfortran.dg/matmul_10.f90   -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (ICE))
      
      	PR target/83451
      	* config/pa/pa.c (pa_emit_move_sequence):  Always emit secondary reload
      	insn for floating-point loads and stores.
      
      From-SVN: r258541
      John David Anglin committed
    • PR libstdc++/78420 Make std::less etc. yield total order for pointers · 0b3ec8f4
      In order for std::less<T*> etc. to meet the total order requirements of
      [comparisons] p2 we need to cast unrelated pointers to uintptr_t before
      comparing them. Those casts aren't allowed in constant expressions, so
      only cast when __builtin_constant_p says the result of the comparison is
      not a compile-time constant (because the arguments are not constants, or
      the result of the comparison is unspecified). When the result is
      constant just compare the pointers directly without casting.
      
      This ensures that the function can be called in constant expressions
      with suitable arguments, but still yields a total order even for
      otherwise unspecified pointer comparisons.
      
      For std::less<void> etc. add new overloads for pointers, which use
      std::less<common_type_t<T*,U*>> directly. Also change the generic
      overloads to detect when the comparison would call a built-in relational
      operator with pointer operands, and dispatch that case to the
      corresponding specialization for void pointers.
      
      	PR libstdc++/78420
      	* include/bits/stl_function.h (greater<_Tp*>, less<_Tp*>)
      	(greater_equal<_Tp*>, less_equal<_Tp>*): Add partial specializations
      	to ensure total order for pointers.
      	(greater<void>, less<void>, greater_equal<void>, less_equal<void>):
      	Add operator() overloads for pointer arguments and make generic
      	overloads dispatch to new _S_cmp functions when comparisons would
      	use built-in operators for pointers.
      	* testsuite/20_util/function_objects/comparisons_pointer.cc: New.
      
      From-SVN: r258540
      Jonathan Wakely committed
    • re PR target/84422 (ICE on various builtin test functions when compiled with -mcpu=power7) · dcdfd478
      gcc/ChangeLog:
      
      2018-03-14  Carl Love  <cel@us.ibm.com>
      
      	PR target/84422
      	* config/rs6000/rs6000-builtin.def: Change expansion for
      	VMULESW to BU_P8V_AV_2.
      	Change expansion for VMULEUW to BU_P8V_AV_2.
      	* config/rs6000/rs6000.c: Change
      	ALTIVEC_BUILTIN_VMULESW to P8V_BUILTIN_VMULESW.
      	Change ALTIVEC_BUILTIN_VMULEUW to P8V_BUILTIN_VMULEUW.
      	Change ALTIVEC_BUILTIN_VMULOSW to P8V_BUILTIN_VMULOSW.
      	Change ALTIVEC_BUILTIN_VMULOUW to P8V_BUILTIN_VMULOUW.
      	* config/rs6000/rs6000-c.c: Change
      	ALTIVEC_BUILTIN_VMULESW to P8V_BUILTIN_VMULESW.
      	Change ALTIVEC_BUILTIN_VMULEUW to P8V_BUILTIN_VMULEUW.
      	Change ALTIVEC_BUILTIN_VMULOSW to P8V_BUILTIN_VMULOSW.
      	Change ALTIVEC_BUILTIN_VMULOUW to P8V_BUILTIN_VMULOUW.
      
      From-SVN: r258539
      Carl Love committed
    • PR c++/83916 - ICE with template template parameters. · e493c503
      	* pt.c (convert_template_argument): Don't substitute into type of
      	non-type parameter if we don't have enough arg levels.
      	(unify): Likewise.
      
      From-SVN: r258533
      Jason Merrill committed
    • rs6000-c.c: Add macro definitions for ALTIVEC_BUILTIN_VEC_PERMXOR. · cb90e18c
      gcc/ChangeLog:
      
      2018-03-14  Carl Love  <cel@us.ibm.com>
      
      	* config/rs6000/rs6000-c.c: Add macro definitions for
      	ALTIVEC_BUILTIN_VEC_PERMXOR.
      	* config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
      	* config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
      	* config/rs6000/altivec.md (altivec_vpermxor): New define expand.
      	* config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
      	UNSPEC_VPERMXOR.
      	* config/doc/extend.texi: Add prototypes for vec_permxor.
      
      gcc/testsuite/ChangeLog:
      
      2018-03-14  Carl Love  <cel@us.ibm.com>
      
      	* gcc.target/powerpc/builtins-7-runnable.c: New test file.
      
      From-SVN: r258530
      Carl Love committed
    • Add test-case (PR ipa/84805). · 5677683f
      2018-03-14  Martin Liska  <mliska@suse.cz>
      
      	PR ipa/8480
      	* g++.dg/lto/pr84805_0.C: New test.
      	* g++.dg/lto/pr84805_1.C: New test.
      	* g++.dg/lto/pr84805_2.C: New test.
      
      From-SVN: r258529
      Martin Liska committed
    • Fix ICE for missing header fix-it hints with overlarge #line directives (PR c/84852) · 082284da
      PR c/84852 reports an ICE inside diagnostic_show_locus when printing
      a diagnostic for a source file with a #line >= 2^31:
      
        #line 7777777777
        int foo (void) { return strlen(""); }
      
      where we're attempting to print a fix-it hint at the top of the file
      and underline the "strlen" (two "line spans").
      
      The
        #line 7777777777
      won't fix within the 32-bit linenum_type, and is truncated from
        0x1cf977871
      to
         0xcf977871
      i.e. 3482810481 in decimal.
      
      Such a #line is reported by -pedantic and -pedantic-errors, but we
      shouldn't ICE.
      
      The ICE is an assertion failure within layout::calculate_line_spans,
      where the line spans have not been properly sorted.
      
      The layout_ranges are stored as int, rather than linenum_type,
      giving line -812156815 for the error, and line 1 for the fix-it hint.
      
      However, line_span uses linenum_type rather than int.
      
      line_span::comparator compares these values as int, and hence
      decides that (linenum_type)3482810481 aka (int)-812156815 is less
      than line 1.
      
      This leads to this assertion failing in layout::calculate_line_spans:
      
      1105	      gcc_assert (next->m_first_line >= current->m_first_line);
      
      since it isn't the case that 1 >= 3482810481.
      
      The underlying problem is the mix of types for storing line numbers:
      in parts of libcpp and diagnostic-show-locus.c we use linenum_type;
      in other places (including libcpp's expanded_location) we use int.
      
      I looked at using linenum_type throughout, but doing so turned into
      a large patch, so this patch fixes the ICE in a less invasive way
      by merely using linenum_type more consistently just within
      diagnostic-show-locus.c, and fixing line_span::comparator to properly
      handle line numbers (and line number differences) >= 2^31, by using
      a new helper function for linenum_type differences, computing the
      difference using long long, and using the sign of the difference
      (as the difference might not fit in the "int" return type imposed
      by qsort).
      
      gcc/ChangeLog:
      	PR c/84852
      	* diagnostic-show-locus.c (class layout_point): Convert m_line
      	from int to linenum_type.
      	(line_span::comparator): Use linenum "compare" function when
      	comparing line numbers.
      	(test_line_span): New function.
      	(layout_range::contains_point): Convert param "row" from int to
      	linenum_type.
      	(layout_range::intersects_line_p): Likewise.
      	(layout::will_show_line_p): Likewise.
      	(layout::print_source_line): Likewise.
      	(layout::should_print_annotation_line_p): Likewise.
      	(layout::print_annotation_line): Likewise.
      	(layout::print_leading_fixits): Likewise.
      	(layout::annotation_line_showed_range_p): Likewise.
      	(struct line_corrections): Likewise for field m_row.
      	(line_corrections::line_corrections): Likewise for param "row".
      	(layout::print_trailing_fixits): Likewise.
      	(layout::get_state_at_point): Likewise.
      	(layout::get_x_bound_for_row): Likewise.
      	(layout::print_line): Likewise.
      	(diagnostic_show_locus): Likewise for locals "last_line" and
      	"row".
      	(selftest::diagnostic_show_locus_c_tests): Call test_line_span.
      	* input.c (selftest::test_linenum_comparisons): New function.
      	(selftest::input_c_tests): Call it.
      	* selftest.c (selftest::test_assertions): Test ASSERT_GT,
      	ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
      	* selftest.h (ASSERT_GT): New macro.
      	(ASSERT_GT_AT): New macro.
      	(ASSERT_LT): New macro.
      	(ASSERT_LT_AT): New macro.
      
      gcc/testsuite/ChangeLog:
      	PR c/84852
      	* gcc.dg/fixits-pr84852-1.c: New test.
      	* gcc.dg/fixits-pr84852-2.c: New test.
      
      libcpp/ChangeLog:
      	* include/line-map.h (compare): New function on linenum_type.
      
      From-SVN: r258526
      David Malcolm committed
    • rs6000: Fix sanitizer frame unwind on 32-bit ABIs · 1422855a
      This fixes more than half of our testcase failures on BE.
      
      
      libsanitizer/
      	* sanitizer_common/sanitizer_stacktrace.cc
      	(BufferedStackTrace::FastUnwindStack): Use the correct frame offset
      	for PowerPC SYSV ABI.
      
      From-SVN: r258525
      Segher Boessenkool committed
    • combine: Don't make log_links for pc_rtx (PR84780 #c10) · def70338
      distribute_links tries to place a log_link for whatever the destination
      of the modified instruction is.  It shouldn't do that when that dest
      is pc_rtx, which isn't actually a register.
      
      
      	* combine.c (distribute_links): Don't make a link based on pc_rtx.
      
      From-SVN: r258523
      Segher Boessenkool committed
    • Fix tree statistics with -fmem-report. · af143019
      2018-03-14  Martin Liska  <mliska@suse.cz>
      
      	* tree.c (record_node_allocation_statistics): Use
      	get_stats_node_kind.
      	(get_stats_node_kind): New function extracted from
      	record_node_allocation_statistics.
      	(free_node): Use get_stats_node_kind.
      
      From-SVN: r258521
      Martin Liska committed
    • tree-ssa-pre.c (compute_antic_aux): Remove code that asserts that the value-set… · 70458d76
      tree-ssa-pre.c (compute_antic_aux): Remove code that asserts that the value-set of ANTIC_IN doesn't grow.
      
      2018-03-14  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
      	that the value-set of ANTIC_IN doesn't grow.
      
      	Revert
      	* tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
      	member.
      	(BB_VISITED_WITH_VISITED_SUCCS): New define.
      	(compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
      
      From-SVN: r258520
      Richard Biener committed
    • Fix FAIL display for some scan-*-times directives · 7b06ad56
      scan-assembler-times and scan-tree-dump-times dejagnu directives show a
      different output in the summary files depending on whether they PASS or
      FAIL. This means that dg-cmp-results would not show a regression because
      it would not see a connection between the two output.
      
      The difference comes from the FAIL showing the number of actual times
      the pattern was match, presumably to help debugging. This patch moves
      the info regarding the actual number of times the pattern match in a
      separate verbose message. This keeps the message unchanged but let
      developers have the required debug message with -v.
      
      2018-03-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
      
          gcc/testsuite/
          * lib/scanasm.exp (scan-assembler-times): Move FAIL debug info into a
          separate verbose message.
          * lib/scandump.exp (scan-dump-times): Likewise.
      
      From-SVN: r258519
      Thomas Preud'homme committed
    • Split-up -march=icelake on -march=icelake-server and -march=icelake-client · 79ab5364
      Split-up -march=icelake on -march=icelake-server and -march=icelake-client
      gcc/
      	* config.gcc (icelake-client, icelake-server): New.
      	(icelake): Remove.
      	* config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
      	(initial_ix86_arch_features): Ditto.
      	(PTA_SKYLAKE): Add SGX.
      	(PTA_ICELAKE): Remove.
      	(PTA_ICELAKE_CLIENT): New.
      	(PTA_ICELAKE_SERVER): New.
      	(ix86_option_override_internal): Split up icelake on icelake client and
      	icelake server.
      	(get_builtin_code_for_version): Ditto.
      	(fold_builtin_cpu): Ditto.
      	* config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
      	* config/i386/i386-c.c (ix86_target_macros_internal): Ditto
      	* config/i386/i386.h (processor_type): Ditto.
      	* doc/invoke.texi: Ditto.
      
      gcc/testsuite/
      	* g++.dg/ext/mv16.C: Split up icelake on icelake client and
      	icelake-server.
      	* gcc.target/i386/funcspec-56.inc: Ditto.
      
      libgcc/
      	* config/i386/cpuinfo.h (processor_subtypes): Split up icelake on
      	icelake-client and icelake-server.
      
      From-SVN: r258518
      Julia Koval committed
    • [AArch64] Fix mul_highpart_1_run.c markup · 788949a3
      2018-03-14  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/mul_highpart_1_run.c: Restrict to
      	aarch64_sve_hw.
      
      From-SVN: r258517
      Richard Sandiford committed
    • re PR sanitizer/83392 (FAIL: c-c++-common/ubsan/ptr-overflow-sanitization-1.c … · be9dd15c
      re PR sanitizer/83392 (FAIL: c-c++-common/ubsan/ptr-overflow-sanitization-1.c  scan-tree-dump-times)
      
      	PR sanitizer/83392
      	* sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
      	INTEGER_CST offset, add it together with bitpos / 8 and
      	sign extend based on POINTER_SIZE.
      
      	* c-c++-common/ubsan/ptr-overflow-sanitization-1.c: Adjust expected
      	check count from 17 to 14.
      
      From-SVN: r258516
      Jakub Jelinek committed
    • re PR target/84844 (ICE in extract_constrain_insn_cached, at recog.c:2217… · 2062c40c
      re PR target/84844 (ICE in extract_constrain_insn_cached, at recog.c:2217 (error: insn does not satisfy its constraints))
      
      	PR target/84844
      	Revert
      	2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
      
      	PR target/78090
      	* config/i386/constraints.md (Yc): New register constraint.
      	* config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
      	Use Yc constraint for alternative 2 of operand 0.  Remove
      	preferred_for_speed attribute.
      
      	* gcc.target/i386/pr84844.c: New test.
      
      From-SVN: r258515
      Jakub Jelinek committed
    • re PR tree-optimization/84830 (ICE in compute_antic, at tree-ssa-pre.c:2388) · ec64ffc8
      2018-03-14  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/84830
      	* tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
      	with the old one to avoid oscillations.
      
      	* gcc.dg/torture/pr84830.c: New testcase.
      
      From-SVN: r258514
      Richard Biener committed
    • re PR c++/84596 (internal compiler error: unexpected expression '(bool)c' of… · 8fef0dc6
      re PR c++/84596 (internal compiler error: unexpected expression '(bool)c' of kind implicit_conv_expr (cxx_eval_constant_expression))
      
      	PR c++/84596
      	* semantics.c (finish_static_assert): Check
      	instantiation_dependent_expression_p instead of
      	{type,value}_dependent_expression_p.
      
      	* g++.dg/cpp0x/static_assert15.C: New test.
      
      From-SVN: r258513
      Marek Polacek committed
    • PR c++/82336 - link error with list-init default argument. · 024a6f45
      	* decl.c (check_default_argument): Unshare an initializer list.
      
      Co-Authored-By: Jason Merrill <jason@redhat.com>
      
      From-SVN: r258512
      Paolo Carlini committed
    • check.c (gfc_check_kill_sub): Remove check for INTEGER(4) or (8). · 17164de4
      2018-03-13  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	* check.c (gfc_check_kill_sub):  Remove check for INTEGER(4) or (8).
      	* intrinsic.c (add_functions): Remove reference to gfc_resolve_kill.
      	(add_subroutines): Remove reference to gfc_resolve_kill_sub.
      	* intrinsic.texi: Update documentation.
      	* iresolve.c (gfc_resolve_kill, gfc_resolve_kill_sub): Remove.
      	* trans-decl.c (gfc_build_intrinsic_function_decls):  Add
      	gfor_fndecl_kill and gfor_fndecl_kill_sub
      	* trans-intrinsic.c (conv_intrinsic_kill, conv_intrinsic_kill_sub): new
      	functions.
      	(gfc_conv_intrinsic_function): Use conv_intrinsic_kill.
              (gfc_conv_intrinsic_subroutine): Use conv_intrinsic_kill_sub.
      	* trans.h: Declare gfor_fndecl_kill and gfor_fndecl_kill_sub.
       
      2018-03-13  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	* libgfortran/gfortran.map: Remove _gfortran_kill_i4,
      	_gfortran_kill_i4_sub, _gfortran_kill_i8, and _gfortran_kill_i8_sub.
      	Add _gfortran_kill and _gfortran_kill_sub.
      	* libgfortran/intrinsics/kill.c: Eliminate _gfortran_kill_i4,
      	_gfortran_kill_i4_sub, _gfortran_kill_i8, and _gfortran_kill_i8_sub.
      	Add _gfortran_kill and _gfortran_kill_sub.
      
      From-SVN: r258511
      Steven G. Kargl committed
    • re PR fortran/61775 (Allocatable array initialized by implied-do loop array… · 10f499af
      re PR fortran/61775 (Allocatable array initialized by implied-do loop array constructor gives invalid memory reference)
      
      2018-03-13  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/61775
      	* gfortran.dg/pr61775.f90: New test.
      
      From-SVN: r258509
      Steven G. Kargl committed
    • Daily bump. · d903fdfd
      From-SVN: r258508
      GCC Administrator committed
  3. 13 Mar, 2018 6 commits
    • re PR target/83712 ("Unable to find a register to spill" when compiling for thumb1) · 6027ea4c
      2018-03-13  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR target/83712
      	* lra-assigns.c (find_all_spills_for): Ignore uninteresting
      	pseudos.
      	(assign_by_spills): Return a flag of reload assignment failure.
      	Do not process the reload assignment failures.  Do not spill other
      	reload pseudos if they has the same reg class.  Update n if
      	necessary.
      	(lra_assign): Add a return arg.  Set up from the result of
      	assign_by_spills call.
      	(find_reload_regno_insns, lra_split_hard_reg_for): New functions.
      	* lra-constraints.c (split_reg): Add a new arg.  Use it instead of
      	usage_insns if it is not NULL.
      	(spill_hard_reg_in_range): New function.
      	(split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
      	* lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
      	function prototypes.
      	(lra_assign): Change prototype.
      	* lra.c (lra): Add code to deal with fails by splitting hard reg
      	live ranges.
      
      From-SVN: r258504
      Vladimir Makarov committed
    • re PR c++/84843 (C++ ICE on builtin redefinition since r258391) · 949aab19
      	PR c++/84843
      	* decl.c (duplicate_decls): For redefinition of built-in, use error
      	and return error_mark_node.  For redeclaration, return error_mark_node
      	rather than olddecl if !flag_permissive.
      
      	* g++.dg/ext/pr84843-1.C: New test.
      	* g++.dg/ext/pr84843-2.C: New test.
      
      From-SVN: r258503
      Jakub Jelinek committed
    • PR c++/82565 - ICE with concepts and generic lambda. · 515f874f
      	* pt.c (instantiate_decl): Clear fn_context for lambdas.
      
      From-SVN: r258502
      Jason Merrill committed
    • PR c++/84720 - ICE with rvalue ref non-type argument. · f71c1a18
      	* pt.c (convert_nontype_argument): Handle rvalue references.
      
      From-SVN: r258501
      Jason Merrill committed
    • PR c++/84839 - ICE with decltype of parameter pack. · a6515784
      	* pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
      	instantiating dummy parms.
      
      From-SVN: r258500
      Jason Merrill committed
    • RISC-V: Add and document the "-mno-relax" option · a7af8489
      RISC-V relies on aggressive linker relaxation to get good code size.  As
      a result no text symbol addresses can be known until link time, which
      means that alignment must be handled during the link.  This alignment
      pass is essentially just another linker relaxation, so this has the
      unfortunate side effect that linker relaxation is required for
      correctness on many RISC-V targets.
      
      The RISC-V assembler has supported an ".option norelax" for a long time
      because there are situations in which linker relaxation is a bad idea --
      the canonical example is when trying to materialize the initial value of
      the global pointer into a register, which would otherwise be relaxed to
      a NOP.  We've been relying on users who want to disable relaxation for
      an entire link to pass "-Wl,--no-relax", but that still relies on the
      linker relaxing R_RISCV_ALIGN to handle alignment despite it not being
      strictly necessary.
      
      This patch adds a GCC option, "-mno-relax", that disable linker
      relaxation by adding ".option norelax" to the top of every generated
      assembly file.  The assembler is smart enough to handle alignment at
      assemble time for files that have never emitted a relaxable relocation,
      so this is sufficient to really disable all relaxations in the linker,
      which results in significantly faster link times for large objects.
      
      This also has the side effect of allowing toolchains that don't support
      linker relaxation (LLVM and the Linux module loader) to function
      correctly.  Toolchains that don't support linker relaxation should
      default to "-mno-relax" and error when presented with any R_RISCV_ALIGN
      relocation as those need to be handled for correctness.
      
      gcc/ChangeLog
      
      2018-03-13  Palmer Dabbelt  <palmer@sifive.com>
      
              * config/riscv/riscv.opt (mrelax): New option.
              * config/riscv/riscv.c (riscv_file_start): Emit ".option
              "norelax" when riscv_mrelax is disabled.
              * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
      
      From-SVN: r258499
      Palmer Dabbelt committed