1. 26 Oct, 2016 30 commits
  2. 25 Oct, 2016 10 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