1. 25 Oct, 2016 30 commits
    • input.c/libcpp: fix lifetimes of path buffers · f5ea989d
      Running "make selftest-valgrind" showed various leaks of the form:
      
      408 bytes in 24 blocks are definitely lost in loss record 572 of 679
         at 0x4A0645D: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
         by 0x1B0D057: xmalloc (xmalloc.c:148)
         by 0x1ACCAA1: append_file_to_dir(char const*, cpp_dir*) [clone .isra.3] (files.c:1567)
         by 0x1ACD56F: _cpp_find_file (files.c:390)
         by 0x1ACF8FB: cpp_read_main_file(cpp_reader*, char const*) (init.c:632)
         by 0x1AB3D97: selftest::lexer_test::lexer_test(selftest::line_table_case const&, char const*, selftest::lexer_test_options*) (input.c:2014)
         by 0x1AB792B: selftest::test_lexer_string_locations_u8(selftest::line_table_case const&) (input.c:2713)
         by 0x1ABA22A: selftest::for_each_line_table_case(void (*)(selftest::line_table_case const&)) (input.c:3227)
         by 0x1ABA381: selftest::input_c_tests() (input.c:3260)
         by 0x1A295F1: selftest::run_tests() (selftest-run-tests.c:62)
         by 0xF20DC4: toplev::run_self_tests() (toplev.c:2076)
         by 0xF20FCD: toplev::main(int, char**) (toplev.c:2153)
      
      Fix the leak by freeing the file->path in destroy_cpp_file.
      However, doing so would lead to a use-after-free in input.c's file cache
      since the filenames in this cache are the libcpp file->path buffers.
      
      Hence we need to ensure that any references to the file in the input.c
      cache are purged before cleaning up file->path.  This is normally done
      by the temp_source_file dtor.  Hence we need to reorder things to that
      the temp_source_file dtor runs before cleaning up the cpp_parser.  The
      patch does this by introducing a wrapper class around cpp_parser *, so
      that the dtor can run after the dtor for temp_source_file.
      
      gcc/ChangeLog:
      	* input.c (fcache::file_patch): Add comment about lifetime.
      	(selftest::cpp_reader_ptr): New class.
      	(selftest::lexer_test): Convert m_parser from cpp_reader *
      	to a cpp_reader_ptr, and move m_tempfile to after it.
      	(selftest::lexer_test::lexer_test): Update for above reordering.
      	(lexer_test::~lexer_test): Move cleanup of m_parser to
      	cpp_reader_ptr's dtor.
      
      libcpp/ChangeLog:
      	* files.c (destroy_cpp_file): Free file->path.
      
      From-SVN: r241536
      David Malcolm committed
    • Convert logical ops on integers to bitwise equivalent with -fdec. · dd90ca33
      	gcc/fortran/
      	* gfortran.texi: Document.
      	* resolve.c (logical_to_bitwise): New function.
      	* resolve.c (resolve_operator): Wrap operands with logical_to_bitwise.
      
      	gcc/testsuite/gfortran.dg/
      	* dec_bitwise_ops_1.f90, dec_bitwise_ops_2.f90: New testcases.
      
      From-SVN: r241534
      Fritz Reese committed
    • Implement ~line_maps () · 2be1b796
      line_maps instances such as the global line_table are
      GC-managed, but the htab within location_adhoc_data_map.htab
      is not GC-managed.
      
      Previously this was deleted manually by a call to
      location_adhoc_data_fini within toplev::main.
      
      However, on adding a call to forcibly_ggc_collect after the
      selftests, all of the htabs for the various line_tables
      created during the selftests start showing up as leaks
      in "make selftest-valgrind", e.g.:
      
      13,536 (1,344 direct, 12,192 indirect) bytes in 12 blocks are definitely lost in loss record 1,065 of 1,086
         at 0x4A081D4: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
         by 0x16DB3B0: xcalloc (xmalloc.c:163)
         by 0x16D8D34: htab_create_typed_alloc (hashtab.c:358)
         by 0x16D8DBD: htab_create_alloc (hashtab.c:286)
         by 0x16A2CCC: linemap_init(line_maps*, unsigned int) (line-map.c:353)
         by 0x1685605: selftest::line_table_test::line_table_test(selftest::line_table_case const&) (input.c:1624)
         by 0x167D09C: selftest::test_applying_fixits_modernize_named_init(selftest::line_table_case const&) (edit-context.c:1430)
         by 0x1686827: selftest::for_each_line_table_case(void (*)(selftest::line_table_case const&)) (input.c:3227)
         by 0x167F067: selftest::edit_context_c_tests() (edit-context.c:1658)
         by 0x1616E67: selftest::run_tests() (selftest-run-tests.c:71)
         by 0xC0DB25: toplev::run_self_tests() (toplev.c:2076)
         by 0x618EB4: toplev::main(int, char**) (toplev.c:2153)
      
      This patch removes the manual one-time cleanup in favor of
      adding a destructor to class line_maps, which cleans up
      the non-GC-managed htab.
      
      Doing so improves "make selftest-valgrind" from:
      
      ==61118== LEAK SUMMARY:
      ==61118==    definitely lost: 121,248 bytes in 1,515 blocks
      ==61118==    indirectly lost: 974,344 bytes in 959 blocks
      ==61118==      possibly lost: 0 bytes in 0 blocks
      ==61118==    still reachable: 1,332,599 bytes in 3,684 blocks
      ==61118==         suppressed: 0 bytes in 0 blocks
      
      to:
      
      ==57182== LEAK SUMMARY:
      ==57182==    definitely lost: 13,840 bytes in 556 blocks
      ==57182==    indirectly lost: 0 bytes in 0 blocks
      ==57182==      possibly lost: 0 bytes in 0 blocks
      ==57182==    still reachable: 1,355,703 bytes in 3,684 blocks
      ==57182==         suppressed: 0 bytes in 0 blocks
      
      gcc/ChangeLog:
      	* toplev.c (toplev::main): Remove call to
      	location_adhoc_data_fini.
      
      libcpp/ChangeLog:
      	* include/line-map.h (line_maps::~line_maps): New dtor.
      	(location_adhoc_data_fini): Delete decl.
      	* line-map.c (line_maps::~line_maps): New dtor.
      	(location_adhoc_data_fini): Delete.
      
      From-SVN: r241533
      David Malcolm committed
    • constexpr.c (maybe_constant_init): Pull out TARGET_EXPR_INITIAL. · f64e0c02
      	* constexpr.c (maybe_constant_init): Pull out TARGET_EXPR_INITIAL.
      
      	(cxx_eval_outermost_constant_expr): Don't return a CONSTRUCTOR
      	with CONSTRUCTOR_NO_IMPLICIT_ZERO.
      	(cxx_eval_call_expression): Clear CONSTRUCTOR_NO_IMPLICIT_ZERO.
      
      From-SVN: r241531
      Jason Merrill committed
    • tree.h (wi::fits_to_tree_p): Accept only 0 and 1 for boolean types. · 90e261e4
      	* tree.h (wi::fits_to_tree_p): Accept only 0 and 1 for boolean types.
      	* tree.c (int_fits_type_p): Likewise.  Adjust head comment.
      
      From-SVN: r241529
      Eric Botcazou committed
    • re PR fortran/72770 (ICE in make_ssa_name_fn, at tree-ssanames.c:263) · cef026ec
      gcc/testsuite/ChangeLog:
      
      2016-10-25  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/72770
      	* gfortran.dg/alloc_comp_class_5.f03: Added test again that caused
      	this pr.
      
      gcc/fortran/ChangeLog:
      
      2016-10-25  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/72770
      	* class.c (find_intrinsic_vtab): No longer encode the string length
      	into vtype's name and use the char's kind for the size instead of
      	the string_length time the size.
      	* trans-array.c (gfc_conv_ss_descriptor): For deferred length char
      	arrays the dynamically sized type needs to be declared.
      	(build_class_array_ref): Address the i-th array element by multiplying
      	it with the _vptr->_size and the _len to make sure char arrays are
      	addressed correctly.
      	* trans-expr.c (gfc_conv_intrinsic_to_class): Made comment more
      	precise.
      
      From-SVN: r241528
      Andre Vehreschild committed
    • Expose forcibly_ggc_collect and run it after all selftests · 6c3b5bf0
      gcc/ChangeLog:
      	* ggc-tests.c (forcibly_ggc_collect): Rename to...
      	(selftest::forcibly_ggc_collect): ...this, and remove "static".
      	(test_basic_struct): Update for above renaming.
      	(test_length): Likewise.
      	(test_union): Likewise.
      	(test_finalization): Likewise.
      	(test_deletable_global): Likewise.
      	(test_inheritance): Likewise.
      	(test_chain_next): Likewise.
      	(test_user_struct): Likewise.
      	(test_tree_marking): Likewise.
      	* selftest-run-tests.c (selftest::run_tests): Call
      	selftest::forcibly_ggc_collect at the end of the selftests.
      	* selftest.h (selftest::forcibly_ggc_collect): New decl.
      
      From-SVN: r241527
      David Malcolm committed
    • re PR target/78102 (GCC refuses to generate PCMPEQQ instruction for SSE4.1) · 96592eed
      	PR target/78102
      	* optabs.def (vcondeq_optab, vec_cmpeq_optab): New optabs.
      	* optabs.c (expand_vec_cond_expr): For comparison codes
      	EQ_EXPR and NE_EXPR, attempt vcondeq_optab as fallback.
      	(expand_vec_cmp_expr): For comparison codes
      	EQ_EXPR and NE_EXPR, attempt vec_cmpeq_optab as fallback.
      	* optabs-tree.h (expand_vec_cmp_expr_p, expand_vec_cond_expr_p):
      	Add enum tree_code argument.
      	* optabs-query.h (get_vec_cmp_eq_icode, get_vcond_eq_icode): New
      	inline functions.
      	* optabs-tree.c (expand_vec_cmp_expr_p): Add CODE argument.  For
      	CODE EQ_EXPR or NE_EXPR, attempt to use vec_cmpeq_optab as
      	fallback.
      	(expand_vec_cond_expr_p): Add CODE argument.  For CODE EQ_EXPR or
      	NE_EXPR, attempt to use vcondeq_optab as fallback.
      	* tree-vect-generic.c (expand_vector_comparison,
      	expand_vector_divmod, expand_vector_condition): Adjust
      	expand_vec_cmp_expr_p and expand_vec_cond_expr_p callers.
      	* tree-vect-stmts.c (vectorizable_condition,
      	vectorizable_comparison): Likewise.
      	* tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern,
      	check_bool_pattern, search_type_for_mask_1): Likewise.
      	* expr.c (do_store_flag): Likewise.
      	* doc/md.texi (@code{vec_cmpeq@var{m}@var{n}},
      	@code{vcondeq@var{m}@var{n}}): Document.
      	* config/i386/sse.md (vec_cmpeqv2div2di, vcondeq<VI8F_128:mode>v2di):
      	New expanders.
      testsuite/
      	* gcc.target/i386/pr78102.c: New test.
      
      From-SVN: r241525
      Jakub Jelinek committed
    • intrinsic.texi (cosd): New mathop. · 8c78afce
      	gcc/fortran/
      	* intrinsic.texi (cosd): New mathop.
      
      From-SVN: r241523
      Cesar Philippidis committed
    • Handle negative times in filesystem::last_write_time · 7195dfe9
      	* src/filesystem/ops.cc
      	(last_write_time(const path&, file_time_type, error_code&)): Handle
      	negative times correctly.
      	* testsuite/experimental/filesystem/operations/last_write_time.cc:
      	Test writing file times.
      
      From-SVN: r241522
      Jonathan Wakely committed
    • Fix error handling in copy_file and equivalent · ec04aad7
      	* src/filesystem/ops.cc (do_copy_file): Report an error if source or
      	destination is not a regular file (LWG 2712).
      	(equivalent): Fix error handling and result when only one file exists.
      	* testsuite/experimental/filesystem/operations/copy.cc: Remove files
      	created by tests. Test copying directories.
      	* testsuite/experimental/filesystem/operations/copy_file.cc: Remove
      	files created by tests.
      	* testsuite/experimental/filesystem/operations/equivalent.cc: New.
      	* testsuite/experimental/filesystem/operations/is_empty.cc: New.
      	* testsuite/experimental/filesystem/operations/read_symlink.cc: Remove
      	file created by test.
      	* testsuite/experimental/filesystem/operations/remove_all.cc: New.
      	* testsuite/util/testsuite_fs.h (~scoped_file): Only try to remove
      	file if path is non-empty, to support removal by other means.
      
      From-SVN: r241521
      Jonathan Wakely committed
    • Enable .XOR. operator with -std=legacy. · 1cf1719b
      	gcc/fortran/
      	* match.c (gfc_match_intrinsic_op): Match ".XOR." with -std=legacy.
      	* gfortran.texi: Document.
      
      	gcc/testsuite/gfortran.dg/
      	* dec_logical_xor_1.f90: New.
              * dec_logical_xor_2.f90: New.
              * dec_logical_xor_3.f03: New.
      
      From-SVN: r241520
      Fritz Reese committed
    • Enable %LOC as an rvalue with -std=legacy. · cd714e1e
      	gcc/fortran/
              * primary.c (gfc_match_rvalue): Match %LOC as LOC with -std=legacy.
              * gfortran.texi: Document.
      
      	gcc/testsuite/gfortran.dg/
      	* dec_loc_rval_1.f90: New test.
              * dec_loc_rval_2.f90: New test.
              * dec_loc_rval_3.f90: New test.
      
      From-SVN: r241519
      Fritz Reese committed
    • Support TYPE as alias for PRINT with -fdec. · 90051c26
      	gcc/fortran/
      	* decl.c (gfc_match_type): New function.
      	* match.h (gfc_match_type): New function.
      	* match.c (gfc_match_if): Special case for one-line IFs.
      	* gfortran.texi: Update documentation.
      	* parse.c (decode_statement): Invoke gfc_match_type.
      
      	gcc/testsuite/gfortran.dg/
      	* dec_type_print.f90: New testcase.
      
      From-SVN: r241518
      Fritz Reese committed
    • Treat form feed as whitespace. · ef144767
      	gcc/fortran/
      	* gfortran.texi: Document.
      	* gfortran.h (gfc_is_whitespace): Include form feed ('\f').
      
      	gcc/testsuite/gfortran.dg/
      	* feed_1.f90, feed_2.f90: New testcases.
      
      From-SVN: r241517
      Fritz Reese committed
    • Cleanup -fdec. · f6d17ecd
      	gcc/fortran/
      	* invoke.texi, gfortran.texi: Touch up documentation of -fdec.
      	* gfortran.h (gfc_option): Move flag_dec_structure out of gfc_option.
      	* decl.c (match_record_decl, gfc_match_decl_type_spec,
      	gfc_match_structure_decl): Ditto.
      	* match.c (gfc_match_member_sep): Ditto.
      	* options.c (gfc_handle_option): Ditto.
      	* lang.opt (fdec-structure): Use Fortran Var for flag_dec_structure.
      	* lang.opt (fdec): Use Fortran Var to create flag_dec.
      	* options.c (set_dec_flags): With -fdec enable -fcray-pointer,
      	-fd-lines-as-comments (default), -fdollar-ok, and legacy std flags.
      
      From-SVN: r241516
      Fritz Reese committed
    • Add BZ marker to recent commit · 6ddefaa7
      From-SVN: r241515
      Jeff Law committed
    • go-lang.c: remove a redundant cast · 4b3aaca6
      gcc/go/ChangeLog:
      	* go-lang.c (go_langhook_type_for_mode): Remove redundant cast
      	from result of GET_MODE_CLASS.  Minor formatting fixes.
      
      From-SVN: r241514
      David Malcolm committed
    • v850.c (v850_handle_data_area_attribute): Fix fallthru comment. · d5356522
      	* config/v850/v850.c (v850_handle_data_area_attribute): Fix fallthru
      	comment.
      	(v850_output_aligned_bss): Add missing break.
      
      From-SVN: r241513
      Jeff Law committed
    • Fix not caught use-after-scope with -O1 (PR sanitize/78106) · 8e104951
      	PR sanitizer/78106
      	* sanopt.c (imm_dom_path_with_freeing_call): Handle gasm
      	statements as they can also contain possibly a freeing call.
      	PR sanitizer/78106
      	* gcc.dg/asan/pr78106.c: New test.
      
      From-SVN: r241511
      Martin Liska committed
    • Fix 2 typos in IPA ICF pass · b93ee1bb
      	* gcc.dg/ipa/ipa-icf-32.c: Removed one scanned pattern.
      	    Martin Liska  <mliska@suse.cz>
      
      	PR ipa/78099
      	* common.opt: Mark flag_ipa_icf_variables as Optimization flag.
      	* ipa-icf.c (sem_function::get_hash): Add target optimization
      	node to hash.
      
      From-SVN: r241510
      Martin Liska committed
    • With -fpu=neon DI mode shifts are expanded after reload. · ad6922b0
      With -fpu=neon DI mode shifts are expanded after reload.  DI mode registers can 
      either fully or partially overlap on both ARM and Thumb-2.  However the shift
      expansion code can only deal with the full overlap case, and generates incorrect
      code for partial overlaps.  The fix is to add new variants that support either
      full overlap or no overlap.
      
          gcc/
      	PR target/78041
      	* config/arm/neon.md (ashldi3_neon): Add "r 0 i" and "&r r i" variants.
      	Remove partial overlap check for shift by 1.
      	(ashldi3_neon): Likewise.
          testsuite/
      	* gcc.target/arm/pr78041.c: New test.
      
      From-SVN: r241508
      Wilco Dijkstra committed
    • constraints.md (Q constraint): Document its use for Thumb-1. · 84c20253
      2016-10-25  Thomas Preud'homme  <thomas.preudhomme@arm.com>
      
          gcc/
          * config/arm/constraints.md (Q constraint): Document its use for
          Thumb-1.
          (Pf constraint): New constraint for relaxed, consume or relaxed memory
          models.
          * config/arm/sync.md (atomic_load<mode>): Add new ARMv8-M Baseline only
          alternatives to allow any register when memory model matches Pf and
          thus lda is used, but only low registers otherwise.  Use unpredicated
          output template for Thumb-1 targets.
          (atomic_store<mode>): Likewise for stl.
          (arm_load_exclusive<mode>): Add new ARMv8-M Baseline only alternative
          whose output template does not have predication.
          (arm_load_acquire_exclusive<mode>): Likewise.
          (arm_load_exclusivesi): Likewise.
          (arm_load_acquire_exclusivesi): Likewise.
          (arm_store_release_exclusive<mode>): Likewise.
          (arm_store_exclusive<mode>): Use unpredicated output template for
          Thumb-1 targets.
      
      From-SVN: r241507
      Thomas Preud'homme committed
    • internal-fn.def (LAUNDER): New internal function. · e16f1cc7
      	* internal-fn.def (LAUNDER): New internal function.
      	* internal-fn.c (expand_LAUNDER): New function.
      c-family/
      	* c-common.h (enum rid): Add RID_BUILTIN_LAUNDER.
      	* c-common.c (c_common_reswords): Add __builtin_launder.
      cp/
      	* cp-tree.h (finish_builtin_launder): Declare.
      	* parser.c (cp_parser_postfix_expression): Handle RID_BUILTIN_LAUNDER.
      	* semantics.c (finish_builtin_launder): New function.
      	* pt.c (tsubst_copy_and_build): Handle instantiation of IFN_LAUNDER.
      	* constexpr.c (cxx_eval_internal_function): Handle IFN_LAUNDER.
      	(potential_constant_expression_1): Likewise.
      testsuite/
      	* g++.dg/cpp1z/launder1.C: New test.
      	* g++.dg/cpp1z/launder2.C: New test.
      
      From-SVN: r241506
      Jakub Jelinek committed
    • Typo. · 080c5459
      From-SVN: r241505
      Georg-Johann Lay committed
    • New avt target pass to work around performance loss by PR fix. · 078134e5
      gcc/
      	New avt target pass to work around performance loss by PR fix.
      	PR target/71676
      	PR target/71678
      	* config/avr/avr.md (casesi_<mode>_sequence) [qi,hi]: New insn.
      	(*cmp<mode>) [qi,qq,uqq,hi,hq,uhq,ha,uha]: Rename to cmp<mode>3.
      	* config/avr/predicates.md (extend_operator): New.
      	* config/avr/avr-passes.def (avr_pass_casesi): Register new pass.
      	* config/avr/avr-protos.h (avr_casei_sequence_check_operands)
      	(make_avr_pass_casesi): New prototypes.
      	* config/avr/avr.c (print-rtl.h): Include it.
      	(pass_data avr_pass_data_casesi): Data for new pass.
      	(avr_pass_casesi): New class implementing rtl_opt_pass .avr-casesi.
      	(make_avr_pass_casesi, avr_parallel_insn_from_insns)
      	(avr_is_casesi_sequence, avr_casei_sequence_check_operands)
      	(avr_optimize_casesi): New functions.
      gcc/testsuite/
      	PR target/71676
      	PR target/71678
      	* gcc.target/avr/pr71676-2.c: New test.
      
      From-SVN: r241504
      Georg-Johann Lay committed
    • re PR target/71676 ([avr] casesi won't handle switch values larger than 16 bits) · c7212a15
      gcc/
      	PR target/71676
      	PR target/71678
      	* config/avr/avr.md (casesi): Rewrite avoiding subregs of SI.
      gcc/testsuite/
      	PR target/71676
      	PR target/71678
      	* gcc.target/avr/pr71676-1.c: New test.
      	* gcc.target/avr/pr71676-3.c: New test.
      	* gcc.target/avr/pr71676.c: New test.
      	* gcc.target/avr/pr71678.c: New test.
      
      Co-Authored-By: Pitchumani Sivanupandi <pitchumani.sivanupandi@microchip.com>
      
      From-SVN: r241503
      Georg-Johann Lay committed
    • Daily bump. · 7330750c
      From-SVN: r241502
      GCC Administrator committed
  2. 24 Oct, 2016 10 commits
    • test_frame_common.h: Add noclone attribute such that cloned verions of tested… · d1c7d3a8
      test_frame_common.h: Add noclone attribute such that cloned verions of tested functions are not created.
      
      gcc/testsuite/ChangeLog:
      
      2016-10-24  Kugan Vivekanandarajah  <kuganvi@linaro.org>
      
      	* gcc.target/aarch64/test_frame_common.h: Add noclone attribute
      	such that cloned verions of tested functions are not created.
      
      From-SVN: r241499
      Kugan Vivekanandarajah committed
    • re PR libfortran/77828 (Linking gfortran-7 compiled program with libgfortran of… · 13926b24
      re PR libfortran/77828 (Linking gfortran-7 compiled program with libgfortran of 5.x allowed but crashes when containing write to string)
      
      2016-10-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR fortran/77828
      	* io/io.h (st_parameter_dt): Reorder for readability and sanity.
      	* io/transfer.c (data_transfer_init): Remove TODO and enable the
      	runtime error message, rec= specifier not allowed in STREAM
      	access.
      	* libtool-version: Bump major version of libgfortran to 4.
      
      	* ioparm.def: Reorder dt parameters to match libgfortran.
      	* libgfortran.h: Swap definitions of GFC_INTERNAL_UNIT and
      	GFC_INTERNAL_UNIT4.
      
      From-SVN: r241497
      Jerry DeLisle committed
    • re PR fortran/71895 (ICE in gfc_compare_derived_types, at fortran/interface.c:520) · c7082171
      2016-10-24  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/71895
      	* interface.c (gfc_compare_derived_types):  Convert gcc_assert()
      	to a gfc_internal_error() to prevent an ICE.
      
      2016-10-24  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/71895
      	* gfortran.dg/pr71895.f90: New test.
      
      From-SVN: r241493
      Steven G. Kargl committed
    • dwarf2out.c (gen_subprogram_die): Add DW_AT_reference or DW_AT_rvalue_reference attributes. · 0f2a9e37
      	* dwarf2out.c (gen_subprogram_die): Add DW_AT_reference or
      	DW_AT_rvalue_reference attributes.
      
      	* cp-objcp-common.c (cp_decl_dwarf_attribute): Handle DW_AT_reference
      	and DW_AT_rvalue_reference.
      
      	* g++.dg/debug/dwarf2/ref-2.C: New test.
      
      From-SVN: r241492
      Jakub Jelinek committed
    • PR libgcc/78064: Add missing include directive to unwind-c.c · 33107571
      	PR libgcc/78064
      	* unwind-c.c: Include auto-target.h.
      
      From-SVN: r241491
      Florian Weimer committed
    • c-common.c (c_common_truthvalue_conversion): Warn for multiplications in boolean context. · f8348061
      2016-10-24  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * c-common.c (c_common_truthvalue_conversion): Warn for
              multiplications in boolean context.  Fix the quoting of '<<' and '<'
              in the shift warning.
      
      gcc:
      2016-10-24  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * doc/invoke.text (Wint-in-bool-context): Update documentation.
              * value-prof.c (stringop_block_profile): Fix a warning.
      
      testsuite:
      2016-10-24  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * c-c++-common/Wint-in-bool-context-3.c: New test.
      
      From-SVN: r241490
      Bernd Edlinger committed
    • PR middle-end/77735 - FAIL: gcc.dg/tree-ssa/builtin-sprintf-warn-1.c · 1eb4547b
      gcc/ChangeLog:
      
      	PR middle-end/77735
      	* builtins.c (string_length): New function.
      	(c_strlen): Use string_length.  Correctly handle wide strings.
      	* gimple-ssa-sprintf.c (target_max_value, target_size_max): New
      	functions.
      	(target_int_max): Call target_max_value.
      	(format_result::knownrange): New data member.
      	(fmtresult::fmtresult): Define default constructor.
      	(format_integer): Use it and set format_result::knownrange.
      	Handle global constants.
      	(format_floating_max): Add third argument.
      	(format_floating): Recompute maximum value for %a for each argument.
      	(get_string_length): Use fmtresult default ctor.
      	(format_string): Set format_result::knownrange.
      	(format_directive): Check format_result::knownrange.
      	(add_bytes): Same.  Correct caret placement in diagnostics.
      	(pass_sprintf_length::compute_format_length): Set
      	format_result::knownrange.
      	(pass_sprintf_length::handle_gimple_call): Use target_size_max.
      
      gcc/testsuite/ChangeLog:
      
      	PR middle-end/77735
      	* gcc.dg/tree-ssa/builtin-sprintf-2.c: Add test cases.
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Same.
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-2.c: Same.
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Adjust/relax.
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-4.c: Add test cases.
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-6.c: XFAIL for LP64 only.
      	* gcc.dg/tree-ssa/builtin-sprintf.c: Add test cases.
      
      From-SVN: r241489
      Martin Sebor committed
    • Fix error handling in filesystem::is_empty · 94caf860
      	* src/filesystem/ops.cc (is_empty): Fix error handling.
      	* testsuite/experimental/filesystem/operations/is_empty.cc: New test.
      
      From-SVN: r241488
      Jonathan Wakely committed
    • PR71337 fix filesystem::temp_directory_path error handling · 6daff2d9
      	PR libstdc++/71337
      	* src/filesystem/ops.cc (temp_directory_path): Pass error_code
      	argument to other filesystem operations.
      	* testsuite/experimental/filesystem/operations/temp_directory_path.cc:
      	Add testcase for inaccessible directory.
      
      From-SVN: r241487
      Jonathan Wakely committed
    • Make directory iterators become end iterator on error · bb52a7e3
      	* src/filesystem/dir.cc (open_dir): Return same value for errors
      	whether ignored or not.
      	(_Dir::advance(error_code*, directory_options)): Return false on
      	error.
      	(directory_iterator(const path&, directory_options, error_code*)):
      	Create end iterator on error (LWG 2723).
      	(recursive_directory_iterator(const path&, directory_options,
      	error_code*)): Likewise.
      	* testsuite/experimental/filesystem/iterators/directory_iterator.cc:
      	Update expected behaviour on error.
      	* testsuite/experimental/filesystem/iterators/
      	recursive_directory_iterator.cc: Likewise.
      
      From-SVN: r241486
      Jonathan Wakely committed