1. 09 Aug, 2016 6 commits
    • re PR c++/72809 (ICE on x86_64-linux-gnu (Segmentation fault, tree_check)) · cadec7ca
      	PR c++/72809
      	* rtti.c (get_pseudo_ti_index): Return TK_CLASS_TYPE for
      	builtin aggregate types without TYPE_BINFO.
      
      	* g++.dg/eh/stdarg1.C: New test.
      
      From-SVN: r239272
      Jakub Jelinek committed
    • Implement C++17 constexpr lambda. · 98e5a19a
      gcc/c-family/
      	* c-cppbuiltin.c (c_cpp_builtins): Update __cpp_constexpr for
      	C++17 constexpr lambdas.
      gcc/cp/
      	* class.c (finalize_literal_type_property): Handle lambdas.
      	* constexpr.c (is_valid_constexpr_fn): Likewise.  No longer static.
      	(explain_invalid_constexpr_fn, cxx_eval_call_expression): Handle
      	lambdas.
      	(cxx_eval_constant_expression): Handle capture proxy.
      	(var_in_constexpr_fn): Don't check for C++14.
      	(var_in_maybe_constexpr_fn): New.
      	(potential_constant_expression_1): Use it.  Check DECL_EXPR for
      	declarations not allowed in constexpr function.
      	* decl.c (make_rtl_for_nonlocal_decl): Use var_in_maybe_constexpr_fn.
      	(finish_function): Set DECL_DECLARED_CONSTEXPR_P on lambda members.
      	* lambda.c (begin_lambda_type): Set CLASSTYPE_LITERAL_P.
      	(maybe_add_lambda_conv_op): Clear thunk CALL_EXPR location.
      	(lambda_static_thunk_p): New.
      	* parser.c (cp_keyword_starts_decl_specifier_p): Add RID_CONSTEXPR.
      	(CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR): New enumerator.
      	(cp_parser_decl_specifier_seq): Handle it.
      	(cp_parser_lambda_declarator_opt): Use cp_parser_decl_specifier_seq.
      	* pt.c (instantiate_class_template_1): Set CLASSTYPE_LITERAL_P.
      	(tsubst_copy_and_build) [CALL_EXPR]: Propagate CALL_FROM_THUNK_P.
      	* error.c (dump_function_decl): Check TFF_NO_TEMPLATE_BINDINGS.
      	(dump_expr) [FUNCTION_DECL]: Pass it.
      
      From-SVN: r239268
      Jason Merrill committed
    • Fix empty class parameters with constexpr. · 7dc2b4a2
      	PR c++/67131
      	* class.c (is_really_empty_class): Call complete_type.
      	* constexpr.c (cxx_eval_constant_expression): Check
      	is_really_empty_class.
      	(potential_constant_expression_1): Likewise.  Check for error type.
      
      From-SVN: r239267
      Jason Merrill committed
    • Fix warning breaking profiled bootstrap · b08e71f9
      This patch fixes an bootstrap error with autoprofiledbootstrap
      due to uninitiliazed variables, because the compiler cannot
      figure out they don't need to be initialized in an error path.
      Just always initialize them.
      
      gcc/:
      
      2016-08-08  Andi Kleen  <ak@linux.intel.com>
      
      	* tree-vrp.c (get_single_symbol): Always initialize inv and neg.
      
      From-SVN: r239266
      Andi Kleen committed
    • Make autofdo tests safer for parallel builds · c43c5112
      There were some reports that the autofdo tests are non deterministic
      with parallel builds. I wasn't able to reproduce this, but here are
      two changes that may help:
      
      - Always use unique file names for temporary files.
      - Don't print file names in the test log because the directories
      can vary (suggested by Jeff Law)
      
      gcc/testsuite/:
      
      2016-08-08  Andi Kleen  <ak@linux.intel.com>
      
      	* lib/profopt.exp: (auto-profopt-execute): Don't include full
      	test command line in failure log.
      	(profopt-execute): dito. Make autofdo file names unique.
      
      From-SVN: r239265
      Andi Kleen committed
    • Daily bump. · 5e1a1c97
      From-SVN: r239264
      GCC Administrator committed
  2. 08 Aug, 2016 23 commits
    • text/template: reduce maxExecDepth for gccgo further · 0717bdbf
          
          We already lowered the limit of recursive template invocations from
          100,000 to 10,000, but the tests still fail occasionally on
          x86_64-pc-linux-gnu when using GNU ld (so that split stacks are not
          fully functional).  Reduce the limit further, to 1000, enough so that
          the test passes consistently.
          
          Permitting 1000 recursive template invocations still seems capacious
          enough for real world use.
          
          Reviewed-on: https://go-review.googlesource.com/25590
      
      From-SVN: r239261
      Ian Lance Taylor committed
    • c-format.c: suggest the correct format string to use (PR c/64955) · 895aa8e1
      This adds fix-it hints to c-format.c so that it can (sometimes) suggest
      the format string the user should have used.
      
      The patch adds selftests for the new code in c-format.c.  These
      selftests are thus lang-specific.  This is the first time we've had
      lang-specific selftests, and hence the patch also adds a langhook for
      running them.  (Note that currently the Makefile only invokes the
      selftests for cc1).
      
      gcc/c-family/ChangeLog:
      	PR c/64955
      	* c-common.h (selftest::c_format_c_tests): New declaration.
      	(selftest::run_c_tests): New declaration.
      	* c-format.c: Include "selftest.h.
      	(format_warning_va): Add param "corrected_substring" and use
      	it to add a replacement fix-it hint.
      	(format_warning_at_substring): Likewise.
      	(format_warning_at_char): Update for new param of
      	format_warning_va.
      	(argument_parser::check_argument_type): Pass "fki" to
      	check_format_types.
      	(check_format_types): Add param "fki" and pass it to
      	format_type_warning.
      	(deref_n_times): New function.
      	(get_modifier_for_format_len): New function.
      	(selftest::test_get_modifier_for_format_len): New function.
      	(get_format_for_type): New function.
      	(format_type_warning): Add param "fki" and use it to attempt
      	to provide hints for argument types when calling
      	format_warning_at_substring.
      	(selftest::get_info): New function.
      	(selftest::assert_format_for_type_streq): New function.
      	(ASSERT_FORMAT_FOR_TYPE_STREQ): New macro.
      	(selftest::test_get_format_for_type_printf): New function.
      	(selftest::test_get_format_for_type_scanf): New function.
      	(selftest::c_format_c_tests): New function.
      
      gcc/c/ChangeLog:
      	PR c/64955
      	* c-lang.c (LANG_HOOKS_RUN_LANG_SELFTESTS): If CHECKING_P, wire
      	this up to selftest::run_c_tests.
      	(selftest::run_c_tests): New function.
      
      gcc/ChangeLog:
      	PR c/64955
      	* langhooks-def.h (LANG_HOOKS_RUN_LANG_SELFTESTS): New default
      	do-nothing langhook.
      	(LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_RUN_LANG_SELFTESTS.
      	* langhooks.h (struct lang_hooks): Add run_lang_selftests.
      	* selftest-run-tests.c: Include "tree.h" and "langhooks.h".
      	(selftest::run_tests): Call lang_hooks.run_lang_selftests.
      
      gcc/testsuite/ChangeLog:
      	PR c/64955
      	* gcc.dg/format/diagnostic-ranges.c: Add fix-it hints to expected
      	output.
      
      From-SVN: r239260
      David Malcolm committed
    • libgo: don't have .lo depend on .lo.dep · b123572d
          
          Having each .lo depend on the corresponding .lo.dep caused too many
          rebuilds, because the .lo.dep files are rebuilt when Makefile changes.
          Instead, if the .lo.dep file changes, remove the .lo file.
          
          Reviewed-on: https://go-review.googlesource.com/25588
      
      From-SVN: r239258
      Ian Lance Taylor committed
    • Fix selftest::test_lexer_string_locations_ebcdic for systems without iconv (PR bootstrap/72844) · a7d79e5c
      selftest::test_lexer_string_locations_ebcdic has this clause:
      
        /* EBCDIC support requires iconv.  */
        if (!HAVE_ICONV)
          return;
      
      leading to a build failure on systems without iconv.  This conditional
      works in libcpp due to this in libcpp/internal.h:
      
        #if HAVE_ICONV
        #include <iconv.h>
        #else
        #define HAVE_ICONV 0
        typedef int iconv_t;  /* dummy */
        #endif
      
      Fix the problem by ensuring that HAVE_ICONV is always defined within
      gcc/input.c.
      
      gcc/ChangeLog:
      	PR bootstrap/72844
      	* input.c: Ensure that HAVE_ICONV is defined.
      
      From-SVN: r239257
      David Malcolm committed
    • testsuite: fix gotest for absolute srcdir · 9a7b0161
          
          The recent changes to Makefile.am mean that if you configure with an
          absolute path as srcdir then gotest will be invoked with absolute paths
          for the files.  That case never worked.  This patch fixes it.
          
          Reviewed-on: https://go-review.googlesource.com/25587
      
      From-SVN: r239256
      Ian Lance Taylor committed
    • pr71078-1.c: Add require-effective-target c99_runtime. · 9afda630
      2016-08-08  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      testsuite/
      	* gcc.dg/tree-ssa/pr71078-1.c: Add require-effective-target
      	c99_runtime.
      	* gcc.dg/tree-ssa/pr71078-1-double.c: Likewise.
      	* gcc.dg/tree-ssa/pr71078-1-long-double.c: Likewise.
      	* gcc.dg/tree-ssa/pr71078-2.c: Likewise.
      	* gcc.dg/tree-ssa/pr71078-2-double.c: Likewise.
      	* gcc.dg/tree-ssa/pr71078-2-long-double.c: Likewise.
      	* gcc.dg/tree-ssa/pr71078-3.c: Likewise.
      
      From-SVN: r239255
      Prathamesh Kulkarni committed
    • Use class substring_loc in c-format.c (PR c/52952) · e52ed3fe
      gcc/c-family/ChangeLog:
      	PR c/52952
      	* c-format.c: Include "diagnostic.h".
      	(location_column_from_byte_offset): Delete.
      	(location_from_offset): Delete.
      	(format_warning_va): New function.
      	(format_warning_at_substring): New function.
      	(format_warning_at_char): New function.
      	(check_format_arg): Capture location of format_tree and pass to
      	check_format_info_main.
      	(argument_parser): Add fields "start_of_this_format" and
      	"format_string_cst".
      	(flag_chars_t::validate): Add param "format_string_cst".  Convert
      	warning_at call using location_from_offset to call to
      	format_warning_at_char.
      	(argument_parser::argument_parser): Add param "format_string_cst_"
      	and use use it to initialize field "format_string_cst".
      	Initialize new field "start_of_this_format".
      	(argument_parser::read_format_flags): Convert warning_at call
      	using location_from_offset to a call to format_warning_at_char.
      	(argument_parser::read_any_format_left_precision): Likewise.
      	(argument_parser::read_any_format_precision): Likewise.
      	(argument_parser::read_any_other_modifier): Likewise.
      	(argument_parser::find_format_char_info): Likewise, in three places.
      	(argument_parser::parse_any_scan_set): Likewise, in one place.
      	(argument_parser::handle_conversions): Likewise, in two places.
      	(argument_parser::check_argument_type): Add param "fmt_param_loc"
      	and use it to make a substring_loc.  Pass the latter to
      	check_format_types.
      	(check_format_info_main): Add params "fmt_param_loc" and
      	"format_string_cst".  Convert warning_at calls using
      	location_from_offset to calls to format_warning_at_char.  Pass the
      	new params to the arg_parser ctor.  Pass "format_string_cst" to
      	flag_chars.validate.  Pass "fmt_param_loc" to
      	arg_parser.check_argument_type.
      	(check_format_types): Convert first param from a location_t
      	to a const substring_loc & and rename to "fmt_loc".  Attempt
      	to extract the range of the relevant parameter and pass it
      	to format_type_warning.
      	(format_type_warning): Convert first param from a location_t
      	to a const substring_loc & and rename to "fmt_loc".  Add
      	params "param_range" and "type".  Replace calls to warning_at
      	with calls to format_warning_at_substring.
      
      gcc/testsuite/ChangeLog:
      	PR c/52952
      	* gcc.dg/cpp/pr66415-1.c: Likewise.
      	* gcc.dg/format/asm_fprintf-1.c: Update column numbers.
      	* gcc.dg/format/c90-printf-1.c: Likewise.
      	* gcc.dg/format/diagnostic-ranges.c: New test case.
      
      From-SVN: r239253
      David Malcolm committed
    • re PR go/72814 (reflect FAILs on 32-bit Solaris/SPARC: SIGILL) · f432d128
      	PR go/72814
      
          runtime: treat zero-sized result value as void
          
          Change the FFI interface to treat a call to a function that returns a
          zero-sized result as a call to a function that returns void.
          
          This is part of the fix for https://gcc.gnu.org/PR72814.  On 32-bit
          SPARC systems, a call to a function that returns a non-zero-sized struct
          is followed by an unimp instruction that describes the size of the
          struct.  The function returns to the address after the unimp
          instruction.  The libffi library can not represent a zero-sized struct,
          so we wind up treating it as a 1-byte struct.  Thus in that case libffi
          calls the function with an unimp instruction, but the function does not
          adjust the return address.  The result is that the program attempts to
          execute the unimp instruction, causing a crash.
          
          This is part of a change that fixes the crash by treating all functions
          that return zero bytes as functions that return void.
          
          Reviewed-on: https://go-review.googlesource.com/25585
      
      	* go-gcc.cc (Gcc_backend::function_type): If the return type is
      	zero bytes, treat the function as returning void.
      	(return_statement): If the return type is zero bytes, don't
      	actually return any values.
      
      From-SVN: r239252
      Ian Lance Taylor committed
    • re PR c++/58706 (ICE with lambda in OpenMP for-loop) · 5c934396
      	PR c++/58706
      	* parser.c: Include tree-iterator.h.
      	(cp_parser_omp_for_loop_init): Move lambda DECL_EXPRs from init
      	to FOR_BLOCK.
      	(cp_parser_omp_for_loop): Handle non-STATEMENT_LIST FOR_BLOCK
      	entries.
      
      	* testsuite/libgomp.c++/pr58706.C: New test.
      
      From-SVN: r239251
      Jakub Jelinek committed
    • re PR fortran/72716 (ICE in gfc_resolve_omp_declare_simd, at fortran/openmp.c:5156) · 77524e0d
      	PR fortran/72716
      	* openmp.c (gfc_match_omp_declare_simd): Don't stick anything into
      	BLOCK DATA ns, it will be rejected later.
      
      	* gfortran.dg/gomp/pr72716.f90: New test.
      
      From-SVN: r239250
      Jakub Jelinek committed
    • re PR middle-end/72781 (-Wuninitialized false positives in OpenMP code) · 2187f2a2
      	PR middle-end/72781
      	* omp-low.c (lower_lastprivate_clauses): Set TREE_NO_WARNING on the
      	private vars for lastprivate and for linear iterator.
      
      	* gcc.dg/gomp/pr72781.c: New test.
      
      From-SVN: r239249
      Jakub Jelinek committed
    • re PR middle-end/68762 (link error for inline function decorated with OpenMP declare simd) · ad200580
      	PR middle-end/68762
      	* omp-simd-clone.c: Include varasm.h.
      	(simd_clone_create): Copy over DECL_COMDAT, DECL_WEAK, DECL_EXTERNAL,
      	DECL_VISIBILITY, DECL_VISIBILITY_SPECIFIED, DECL_DLLIMPORT_P and for
      	DECL_ONE_ONLY call make_decl_one_only.  Fix up spelling in comment and
      	update function name.
      
      	* g++.dg/vect/pr68762-1.cc: New test.
      	* g++.dg/vect/pr68762-2.cc: New test.
      	* g++.dg/vect/pr68762.h: New file.
      
      From-SVN: r239248
      Jakub Jelinek committed
    • c-format.c: cleanup of check_format_info_main · 1c4d457e
      gcc/c-family/ChangeLog:
      	* c-format.c (class flag_chars_t): New class.
      	(struct length_modifier): New struct.
      	(class argument_parser): New class.
      	(flag_chars_t::flag_chars_t): New ctor.
      	(flag_chars_t::has_char_p): New method.
      	(flag_chars_t::add_char): New method.
      	(flag_chars_t::validate): New method.
      	(flag_chars_t::get_alloc_flag): New method.
      	(flag_chars_t::assignment_suppression_p): New method.
      	(argument_parser::argument_parser): New ctor.
      	(argument_parser::read_any_dollar): New method.
      	(argument_parser::read_format_flags): New method.
      	(argument_parser::read_any_format_width): New method.
      	(argument_parser::read_any_format_left_precision): New method.
      	(argument_parser::read_any_format_precision): New method.
      	(argument_parser::handle_alloc_chars): New method.
      	(argument_parser::read_any_length_modifier): New method.
      	(argument_parser::read_any_other_modifier): New method.
      	(argument_parser::find_format_char_info): New method.
      	(argument_parser::validate_flag_pairs): New method.
      	(argument_parser::give_y2k_warnings): New method.
      	(argument_parser::parse_any_scan_set): New method.
      	(argument_parser::handle_conversions): New method.
      	(argument_parser::check_argument_type): New method.
      	(check_format_info_main): Introduce classes argument_parser
      	and flag_chars_t, moving the code within the loop into methods
      	of these classes.  Make various locals "const".
      
      From-SVN: r239247
      David Malcolm committed
    • driver-avr.c (specfiles_doc_url): Remove. · 66c3dd8c
      	* config/avr/driver-avr.c (specfiles_doc_url): Remove.
      	(avr_diagnose_devicespecs_error): Remove.
      	(avr_devicespecs_file): Remove composing absolute path for specfile
      	and its verbose info. Remove conditions to check specs-file,
      
      From-SVN: r239246
      Pitchumani Sivanupandi committed
    • PR testsuite/72838 - FAIL: g++.dg/cpp0x/constexpr-cast.C · 989d0071
      gcc/testsuite/ChangeLog:
      	* gcc/testsuite/g++.dg/cpp0x/constexpr-cast.C: Correct target selector.
      	* gcc/testsuite/g++.dg/warn/overflow-warn-3.C: Same.
      	* gcc/testsuite/g++.dg/warn/overflow-warn-4.C: Same.
      
      From-SVN: r239242
      Martin Sebor committed
    • re PR rtl-optimization/72821 (RTL check: expected elt 2 type 'B', have '0' (rtx… · 5435398d
      re PR rtl-optimization/72821 (RTL check: expected elt 2 type 'B', have '0' (rtx barrier) in BLOCK_FOR_INSN, at rtl.h:1424)
      
      	PR rtl-optimization/72821
      	* lra-spills.c (regno_in_use_p): Don't use BLOCK_FOR_INSN on barriers,
      	just return false for them.
      
      From-SVN: r239241
      Jakub Jelinek committed
    • [RS6000] TOC refs generated during reload · a1c13832
      The generic reload fix for pr72771 exposed a problem with recognizing
      -mcmodel=medium/large TOC references generated during reload.
      
      	PR target/72771
      	* config/rs6000/rs6000.c (toc_relative_expr_p): Allow (lo_sum (high))
      	toc refs created during reload.  Update function comment.
      
      From-SVN: r239240
      Alan Modra committed
    • re PR fortran/71936 (ICE in wide_int_to_tree, at tree.c:1487) · 7090cac9
      gcc/fortran/ChangeLog:
      
      2016-08-08  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/71936
      	* trans-array.c (gfc_array_allocate): When SOURCE= is a function
      	stick with the ref of the object to allocate.
      
      gcc/testsuite/ChangeLog:
      
      2016-08-08  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/71936
      	* gfortran.dg/allocate_with_source_21.f03: New test.
      
      From-SVN: r239237
      Andre Vehreschild committed
    • re PR fortran/72698 (ICE in lhd_incomplete_type_error, at langhooks.c:205) · 64e56ab0
      gcc/testsuite/ChangeLog:
      
      2016-08-08  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/72698
      	* gfortran.dg/allocate_with_source_20.f03: New test.
      
      
      gcc/fortran/ChangeLog:
      
      2016-08-08  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/72698
      	* trans-stmt.c (gfc_trans_allocate): Prevent generating code for
      	copy of zero sized string and with it an ICE.
      
      From-SVN: r239236
      Andre Vehreschild committed
    • [RS6000] PR72802 part 2, reload ICE · 0476487d
      After fixing the constraint problem, we hit an "insn does not satisfy
      its constraints" with -mno-lra on the following insn, a vector load
      from mem which has an invalid offset:
      (insn 631 630 1122 12 (set (reg:SF 108 31 [orig:260 pretmp_44 ] [260])
              (mem:SF (plus:DI (reg:DI 30 30 [orig:338 ivtmp.141 ] [338])
                      (const_int 2 [0x2])) [5 MEM[base: _1, offset: 2B]+0 S4 A32])) 470 {movsf_hardfloat}
           (nil))
      
      Here are the reload costs for the various alternatives of
      movsf_hardfloat:
      "=!r, !r,  m,  f, ww, ww, !r,  f, wb,  m, wY, wu,  Z,?wn, ?r,*c*l, !r, *h"
        "r,  m,  r,  f, ww,  j,  j,  m, wY,  f, wb,  Z, wu,  r, wn,   r, *h,  0"
       617 609  17  17   8   8 617   9   8  17  17   8  17  23  23   17 617  17
      
      Notice that the cost for a vector<-vector move (ww,ww) is the same as
      the cost for a vector<-mem move (wb,wY or wu,Z).  Since the
      vector<-vector move comes first, it is chosen and the mem part of the
      insn reloaded.  That just gives another copy of insn 631.
      
      	PR target/72802
      	* config/rs6000/rs6000.md (mov<mode>_hardfloat): Sort
      	alternatives.  Put loads first, then stores, and reg/reg moves
      	within same class later.  Delete attr length.
      testsuite/
      	* gcc.c-torture/compile/pr72802.c: New.
      
      From-SVN: r239234
      Alan Modra committed
    • [RS6000] PR72802 part 1, fix constraints for lxssp/stxssp · ad69178c
      We can't use "o" constraint for lsxxp/stxssp since those insns have a
      DS-form offset field, ie. the bottom two bits of the offset must be 0.
      So use "wY" instead, but that leads to finding another problem.
      
      mem_operand_gpr is only suitable for gpr loads/stores since it does
      not enforce multiple-of-4 offsets when -m32.  So "wY" can't use
      mem_operand_gpr, and the vsx tests in mem_operand_gpr are bogus.
      
      I've deleted offsettable_mem_14bit_operand because it wasn't used
      anywhere but in the wY constraint.  Note also that the new wY
      constraint doesn't use memory_operand because that is redundant in a
      constraint, having already been tested in the predicate.
      
      	PR target/72802
      	* config/rs6000/rs6000.c (mem_operand_gpr): Remove vsx dform test.
      	(mem_operand_ds_form): New predicate.
      	* config/rs6000/rs6000-protos.h (mem_operand_ds_form): Declare.
      	* config/rs6000/constraints.md (wY): Use mem_operand_df_form.
      	* config/rs6000/predicates.md (offsettable_mem_14bit_operand): Delete.
      	* config/rs6000/rs6000.md (f32_lm2, f32_sm2): Use wY for SF.
      	(extendsfdf2_fpr): Replace o constraint with wY.
      
      From-SVN: r239233
      Alan Modra committed
    • re PR fortran/70524 (ICE when using -frepack-arrays -Warray-temporaries) · 8e9218f2
      gcc/testsuite/ChangeLog:
      
      2016-08-08  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/70524
      	* gfortran.dg/dependency_48.f90: New test.
      
      
      gcc/fortran/ChangeLog:
      
      2016-08-08  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/70524
      	* trans-array.c (gfc_trans_dummy_array_bias): Ensure that the
      	location information is correctly set.
      	* trans-decl.c (gfc_trans_deferred_vars): Set the locus of the
      	current construct early.
      
      From-SVN: r239230
      Andre Vehreschild committed
    • Daily bump. · 1b8256df
      From-SVN: r239228
      GCC Administrator committed
  3. 07 Aug, 2016 8 commits
  4. 06 Aug, 2016 3 commits