1. 26 Oct, 2016 21 commits
  2. 25 Oct, 2016 19 commits
    • vax.c (vad_address_cost_1): Add missing FALLTHRU comment. · 9443c717
      	* config/vax/vax.c (vad_address_cost_1): Add missing FALLTHRU comment.
      	(vax_notice_update_cc): Likewise.
      
      From-SVN: r241542
      Jeff Law committed
    • MAINTAINERS (Write After Approval): Add myself. · ac164b5b
      2016-10-25  Will Schmidt  <will_schmidt@vnet.ibm.com>
      
      	* MAINTAINERS (Write After Approval): Add myself.
      
      From-SVN: r241541
      Will Schmidt committed
    • re PR fortran/45516 ([F08] allocatable compontents of recursive type) · bf9f15ee
      2016-10-25  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/45516
      	* class.c (gfc_find_derived_vtab): Detect recursive allocatable
      	derived type components. If present, add '_deallocate' field to
      	the vtable and build the '__deallocate' function.
      	* decl.c (build_struct): Allow recursive allocatable derived
      	type components for -std=f2008 or more.
      	(gfc_match_data_decl): Accept these derived types.
      	* expr.c (gfc_has_default_initializer): Ditto.
      	* resolve.c (resolve_component): Make sure that the vtable is
      	built for these derived types.
      	* trans-array.c(structure_alloc_comps) : Use the '__deallocate'
      	function for the automatic deallocation of these types.
      	* trans-expr.c : Generate the deallocate accessor.
      	* trans.h : Add its prototype.
      	* trans-types.c (gfc_get_derived_type): Treat the recursive
      	allocatable components in the same way as the corresponding
      	pointer components.
      
      2016-10-25  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/45516
      	* gfortran.dg/class_2.f03: Set -std=f2003.
      	* gfortran.dg/finalize_21.f90: Modify tree-dump.
      	* gfortran.dg/recursive_alloc_comp_1.f08: New test.
      	* gfortran.dg/recursive_alloc_comp_2.f08: New test.
      	* gfortran.dg/recursive_alloc_comp_3.f08: New test.
      	* gfortran.dg/recursive_alloc_comp_4.f08: New test.
      
      From-SVN: r241539
      Paul Thomas committed
    • config.gcc (sparc*-*-solaris2*): Adjust. · 7c7dae65
      	* config.gcc (sparc*-*-solaris2*): Adjust.
      	(sparc64-*-linux*): Likewise.
      	* config/sparc/default-64.h: Rename to...
      	* config/sparc/default64.h: ...this.
      	* config/sparc/sparc.c (sparc_option_override): Replace TARGET_64BIT
      	with TARGET_ARCH64.
      	(sparc_mangle_type): Replace !TARGET_64BIT with TARGET_ARCH32.
      	* config/sparc/sparc.h: Minor tweaks.
      	* config/sparc/sparc.md: Replace !TARGET_64BIT and !TARGET_ARCH64 with
      	TARGET_ARCH32 throughout.  Minor various tweaks throughout.
      
      From-SVN: r241538
      Eric Botcazou committed
    • re PR sanitizer/78106 (ASAN can't find heap-use-after-free with -O1) · 6c95388f
      	PR sanitizer/78106
      	* gcc.dg/asan/pr78106.c: Add -ffat-lto-objects to dg-options.
      
      From-SVN: r241537
      Jakub Jelinek committed
    • 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