1. 27 Nov, 2018 31 commits
    • compiler: add '$' to names in expression export data · 80d7d30d
          
          For inlined function bodies we're going to need to refer to variables,
          so change the existing export data to add a '$' to names that look
          like identifiers: true, false, nil, convert.
          
          While we're here drop an unnecessary space character after operators.
          
          Reviewed-on: https://go-review.googlesource.com/c/150067
      
      From-SVN: r266529
      Ian Lance Taylor committed
    • re PR libstdc++/88199 (memory leak on unordered container move assignment) · 01021139
      2018-11-27  François Dumont  <fdumont@gcc.gnu.org>
      
      	PR libstdc++/88199
      	* include/bits/hashtable.h (_Hashtable<>::_M_assign_elements): New.
      	(_Hashtable<>::operator=(const _Hashtable&)): Use latter.
      	(_Hashtable<>::_M_move_assign(_Hashtable&&, false_type)): Likewise.
      	* testsuite/23_containers/unordered_set/allocator/move_assign.cc
      	(test03): New.
      
      From-SVN: r266528
      François Dumont committed
    • re PR c++/88181 (ICE: verify_type failed (error: type variant differs by TYPE_PACKED)) · d15a7969
      	PR c++/88181
      	* class.c (fixup_attribute_variants): Also propagate TYPE_PACKED
      	to variants.
      
      	* g++.dg/debug/pr88181.C: New test.
      
      From-SVN: r266527
      Jakub Jelinek committed
    • compiler: change expression importing to use Import_expression · fc74d562
          
          Change expression importing to use a new abstract interface class
          Import_expression, so that we can more easily import expressions from
          inlinable function bodies.  This is a refactoring with no affect on
          compiler behavior.
          
          Reviewed-on: https://go-review.googlesource.com/c/150065
      
      From-SVN: r266526
      Ian Lance Taylor committed
    • compiler: pass a Location to import_expression · 59357059
          
          Separate the Location that import_expression uses when creating a new
          Expression from the Location used to report an error.  This is a step
          toward importing expressions for inlined functions.  This is a pure
          refactoring that does not affect compiler behavior.
          
          Reviewed-on: https://go-review.googlesource.com/c/150064
      
      From-SVN: r266525
      Ian Lance Taylor committed
    • re PR middle-end/87157 (gcc.dg/vect/costmodel/ppc/costmodel-vect-33.c fails starting with r263981) · 98f33efc
      	PR middle-end/87157
      	* gcc.dg/vect/costmodel/ppc/costmodel-vect-33.c (main1): Add noipa
      	attribute.
      
      From-SVN: r266524
      Jakub Jelinek committed
    • compiler: change Expression export to use Export_function_body · 336785ef
          
          In preparation for writing expressions to inline function bodies,
          change the existing expression export code to use Export_function_body
          rather than Export.  Adjust existing expression exporters accordingly.
          
          This is a refactoring that doesn't affect compiler output.
          
          Reviewed-on: https://go-review.googlesource.com/c/150063
      
      From-SVN: r266523
      Ian Lance Taylor committed
    • PR 87756 - missing unterminated argument warning using address of a constant character · ba28599c
      PR 87756 - missing unterminated argument warning using address of a constant character
      PR 88211 - missing warning on printf %ls and unterminated wide member array
      PR 88226 - missing warning on fprintf, fputs, and puts with an unterminated array
      
      gcc/ChangeLog:
      
      	* gcc.dg/tree-ssa/builtin-fprintf-warn-1.c: Update/remove xfails.
      	* gcc.dg/tree-ssa/builtin-printf-warn-1.c: Same.
      	* gcc.dg/tree-ssa/user-printf-warn-1.c: Same.
      
      From-SVN: r266522
      Martin Sebor committed
    • gcov: do not ICE on NULL string in JSON export. · 0ffa4bc2
      2018-11-27  Martin Liska  <mliska@suse.cz>
      
      	* gcov.c (generate_results): Append current_working_directory
      	only when exists.
      
      From-SVN: r266521
      Martin Liska committed
    • PR preprocessor/83173: Enhance -fdump-internal-locations output · bc65bad2
      gcc/ChangeLog:
      2018-11-27  Mike Gulick  <mgulick@mathworks.com>
      
      	PR preprocessor/83173
      	* input.c (dump_location_info): Dump reason and included_from
      	fields from line_map_ordinary struct.  Fix indentation when
      	location > 5 digits.
      	* diagnostic-show-locus.c (num_digits, num_digits): Move to
      	diagnostic.c to allow it to be utilized by input.c.
      	* diagnostic.c (num_digits, selftest::test_num_digits): Moved
      	here.
      	(selftest::diagnostic_c_tests): Run selftest::test_num_digits.
      	* diagnostic.h (num_digits): Add extern definition.
      
      libcpp/ChangeLog:
      2018-11-27  Mike Gulick  <mgulick@mathworks.com>
      
      	PR preprocessor/83173
      	* location-example.txt: Update example -fdump-internal-locations
      	output.
      
      From-SVN: r266520
      Mike Gulick committed
    • MIPS: Add `-mfix-r5900' option for the R5900 short loop erratum · fb51a3a8
      The short loop bug under certain conditions causes loops to
      execute only once or twice, due to a hardware bug in the R5900 chip.
      
      `-march=r5900' already enables the R5900 short loop workaround.
      However, the R5900 ISA and most other MIPS ISAs are mutually
      exclusive since R5900-specific instructions are generated as well.
      
      The `-mfix-r5900' option can be used in combination with e.g.
      `-mips2' or `-mips3' to generate generic MIPS binaries that also
      work with the R5900 target.  The workaround is implemented by GAS
      rather than by GCC.
      
      The following small `shortloop.c' file has been used as a test
      with GCC 8.2.0:
      
      void shortloop(void)
      {
          __asm__ __volatile__ (
      	"	li $3, 300\n"
      	"loop:\n"
      	"	addi $3, -1\n"
      	"	addi $4, -1\n"
      	"	bne $3, $0, loop\n"
      	"	li $4, 3\n"
      	::);
      }
      
      The following six combinations have been tested:
      
      % mipsr5900el-unknown-linux-gnu-gcc -O1 -c shortloop.c
      % mipsr5900el-unknown-linux-gnu-gcc -O1 -c shortloop.c -mfix-r5900
      % mipsr5900el-unknown-linux-gnu-gcc -O1 -c shortloop.c -mno-fix-r5900
      
      % mipsr4000el-unknown-linux-gnu-gcc -O1 -c shortloop.c
      % mipsr4000el-unknown-linux-gnu-gcc -O1 -c shortloop.c -mfix-r5900
      % mipsr4000el-unknown-linux-gnu-gcc -O1 -c shortloop.c -mno-fix-r5900
      
      The R5900 short loop erratum is corrected in exactly three cases:
      
      1. for the target `mipsr5900el' by default;
      
      2. for the target `mipsr5900el' with `-mfix-r5900';
      
      3. for any other MIPS target (e.g. `mipsr4000el') with `-mfix-r5900'.
      
      In all other cases the correction is not made.
      
      2018-11-27  Fredrik Noring  <noring@nocrew.org>
      
      	gcc/
      	* config/mips/mips.c (mips_reorg_process_insns)
      	(mips_option_override): Handle `-mfix-r5900'.
      	* config/mips/mips.h (ASM_SPEC): Add `mfix-r5900' and
      	`mno-fix-r5900'.
      	* config/mips/mips.opt (mfix-r5900): New option.
      	* doc/invoke.texi: Document the `r5900' processor name, and
      	`-mfix-r5900' and `-mno-fix-r5900' options.
      
      From-SVN: r266519
      Fredrik Noring committed
    • PR preprocessor/83173: New test · 4d8da4df
      2018-11-27  Mike Gulick  <mgulick@mathworks.com>
      
      	PR preprocessor/83173
      	* gcc.dg/plugin/location-overflow-test-pr83173.c: New test.
      	* gcc.dg/plugin/location-overflow-test-pr83173.h: Header for
      	pr83173.c.
      	* gcc.dg/plugin/location-overflow-test-pr83173-1.h: Header for
      	pr83173.c.
      	* gcc.dg/plugin/location-overflow-test-pr83173-2.h: Header for
      	pr83173.c.
      	* gcc.dg/plugin/location_overflow_plugin.c: Use PLUGIN_PRAGMAS
      	instead of PLUGIN_START_UNIT.
      	* gcc.dg/plugin/plugin.exp: Enable new test.
      
      From-SVN: r266518
      Mike Gulick committed
    • compiler: import inlinable functions from package data · 862ec763
          
          Start reading the export data generated by the last change in this
          series.  At this point we will inline direct calls to empty functions
          and methods defined in different packages.
          
          Reviewed-on: https://go-review.googlesource.com/c/150062
      
      From-SVN: r266517
      Ian Lance Taylor committed
    • PR preprocessor/83173: Additional check before decrementing highest_location · 56c79e7f
      2018-11-27  Mike Gulick  <mgulick@mathworks.com>
      
      	PR preprocessor/83173
      	* files.c (_cpp_stack_include): Check if
      	line_table->highest_location is past current line before
      	decrementing.
      
      From-SVN: r266516
      Mike Gulick committed
    • re PR target/88188 (ICE in print_operand, at config/rs6000/rs6000.c) · f316c3e5
      	PR target/88188
      	* config/rs6000/rs6000.c (print_operand) <case 'D'>: Use
      	output_operand_lossage instead of gcc_assert.
      	<case 't'>: Likewise.
      	<case 'z'>: Likewise.
      	<case 'V'>: Use output_operand_lossage instead of gcc_unreachable.
      
      	* gcc.target/powerpc/pr88188.c: New test.
      
      From-SVN: r266515
      Jakub Jelinek committed
    • riscv (riscv_block_mvoe_straight): Use RETURN_BEGIN in call to move_by_pieces. · cece89d0
      	* config/riscv/riscv (riscv_block_mvoe_straight): Use RETURN_BEGIN
      	in call to move_by_pieces.
      
      	* config/sh/sh-mem.c (expand_block_move): Use RETURN_BEGIN in call
      	to move_by_pieces.
      
      From-SVN: r266514
      Jeff Law committed
    • lm32.c (lm32_block_move_inline): Use RETURN_BEGIN in call to move_by_pieces. · 5605f2e1
      	* config/lm32/lm32.c (lm32_block_move_inline): Use RETURN_BEGIN in
      	call to move_by_pieces.
      
      From-SVN: r266513
      Jeff Law committed
    • mips.c (mips_block_move_straight): Use RETURN_BEGIN in call to move_by_pieces. · 5930367d
      	* config/mips/mips.c (mips_block_move_straight): Use RETURN_BEGIN
      	in call to move_by_pieces.
      
      2018-11-27  Tamar Christina  <tamar.christina@arm.com>
      
      From-SVN: r266512
      Jeff Law committed
    • microblaze.c (microblaze_block_move_straight): Use RETURN_BEGIN in call to move_by_pieces. · 441fd442
      	* config/microblaze/microblaze.c (microblaze_block_move_straight): Use
      	RETURN_BEGIN in call to move_by_pieces.
      	(microblaze_expand_block_move): Likewise.
      
      From-SVN: r266511
      Jeff Law committed
    • Document the xorsign optab. · cb369975
      2018-11-27  Tamar Christina  <tamar.christina@arm.com>
      
      	* doc/md.texi (xorsign): Document it.
      
      From-SVN: r266510
      Tamar Christina committed
    • Support simd function declarations via a pre-include. · facf0354
      2018-11-27  Martin Liska  <mliska@suse.cz>
      
      	* config/gnu-user.h (TARGET_F951_OPTIONS): New.
      	* gcc.c (find_fortran_preinclude_file): New function
      	to handle Fortran pre-include.
      2018-11-27  Martin Liska  <mliska@suse.cz>
      
      	* decl.c (gfc_match_gcc_builtin): New function.
      	* gfortran.h (struct vect_builtin_tuple): New.
      	(gfc_adjust_builtins): Likewise.
      	* lang-specs.h (TARGET_F951_OPTIONS): New.
      	(F951_OPTIONS): Use it.
      	* lang.opt: Add new option -fpre-include.
      	* match.h (gfc_match_gcc_builtin): Declare new function.
      	* parse.c (decode_gcc_attribute): Handle builtin.
      	(parse_progunit): Call gfc_adjust_builtins.
      	* scanner.c (gfc_new_file): Load pre-included header file
      	when provided.
      	* trans-intrinsic.c (add_simd_flag_for_built_in): New.
      	(gfc_adjust_builtins): Likewise.
      2018-11-27  Martin Liska  <mliska@suse.cz>
      
      	* gfortran.dg/simd-builtins-1.f90: New test.
      	* gfortran.dg/simd-builtins-1.h: New test.
      	* gfortran.dg/simd-builtins-2.f90: New test.
      	* gfortran.dg/simd-builtins-3.f90: New test.
      	* gfortran.dg/simd-builtins-3.h: New test.
      	* gfortran.dg/simd-builtins-4.f: New test.
      	* gfortran.dg/simd-builtins-4.h: New test.
      	* gfortran.dg/simd-builtins-5.f: New test.
      	* gfortran.dg/simd-builtins-6.f90: New test.
      
      From-SVN: r266509
      Martin Liska committed
    • Come up with memop_ret enum instead of int endp for memory operations. · 2ff5ffb6
      2018-11-27  Martin Liska  <mliska@suse.cz>
      
      	* asan.c (asan_emit_stack_protection): Use new enum values
      	instead of int constants.
      	* builtins.c (expand_builtin_memory_copy_args): Replace int
      	type with memop_ret enum type.
      	(expand_builtin_mempcpy_args): Likewise.
      	(expand_builtin_memcpy): Use new enum values
      	instead of int constants. Likewise.
      	(expand_builtin_mempcpy): Likewise.
      	(expand_movstr): Likewise.
      	(expand_builtin_strcpy_args): Likewise.
      	(expand_builtin_stpcpy_1): Likewise.
      	(expand_builtin_strncpy): Likewise.
      	(expand_builtin_memset_args): Likewise.
      	* expr.c (move_by_pieces_d::finish_endp): Rename to ...
      	(move_by_pieces_d::finish_retmode): ... this.
      	(move_by_pieces): Change last argument type to memop_ret.
      	(store_by_pieces): Use new enum values
      	instead of int constants.
      	(emit_block_move_hints): Likewise.
      	(emit_push_insn): Likewise.
      	(store_expr): Likewise.
      	* expr.h (store_by_pieces): Change int to newly added enum
      	type.
      	* rtl.h (enum memop_ret): Define.
      	(move_by_pieces): Use the enum type.
      
      From-SVN: r266508
      Martin Liska committed
    • c-ada-spec.c: Include stringpool.h. · da193a27
      	* c-ada-spec.c: Include stringpool.h.
      	(has_static_fields): Return false for incomplete types.
      	(is_tagged_type): Likewise.
      	(has_nontrivial_methods): Likewise.
      	(dump_ada_node) <INTEGER_TYPE>: Deal specifically with __int128.
      	(struct overloaded_name_hash): New structure.
      	(struct overloaded_name_hasher): Likewise.
      	(overloaded_names): New global variable.
      	(init_overloaded_names): New static function.
      	(overloaded_name_p): New predicate.
      	(dump_ada_declaration) <TYPE_DECL>: Tidy up and set TREE_VISITED
      	on the TYPE_STUB_DECL of the original type of a typedef, if any.
      	<FUNCTION_DECL>: Bail out for an unsupported overloaded name.
      	Remove always-true condition and dump forward types.
      	(dump_ada_specs): Delete overloaded_names.
      
      From-SVN: r266506
      Eric Botcazou committed
    • [libbacktrace] Don't point to released memory in backtrace_vector_release · 6d760a01
      When backtrace_vector_release is called with vec.size == 0, it releases the
      memory pointed at by vec.base.
      
      Set vec.base set to NULL if vec.size == 0 to ensure we don't point to released
      memory.
      
      Bootstrapped and reg-tested on x86_64.
      
      2018-11-27  Tom de Vries  <tdevries@suse.de>
      
      	* mmap.c (backtrace_vector_release): Same.
      	* unittest.c (test1): Add check.
      
      From-SVN: r266505
      Tom de Vries committed
    • [libbacktrace] Avoid realloc with size == 0 in backtrace_vector_release · 0c155f24
      As of C17, realloc with size 0 is marked as an obsolescent feature.
      
      Fix this in backtrace_vector_release by using free instead.
      
      Bootstrapped and reg-tested on x86_64.
      
      2018-11-27  Tom de Vries  <tdevries@suse.de>
      
      	* alloc.c (backtrace_vector_release): Handle vec->size == 0 using free
      	instead of realloc.
      	* Makefile.am (check_PROGRAMS): Add unittest.
      	* Makefile.in: Regenerate.
      	* unittest.c: New file.
      
      From-SVN: r266504
      Tom de Vries committed
    • [RS6000] libgcc cfi · 1ea7ea18
      There are a few places in libgcc assembly where we don't emit call
      frame information for functions, potentially breaking unwinding from
      asynchronous signal handlers.  This patch fixes them.  Although I
      patch tramp.S there is no attempt made to provide CFI for the actual
      trampoline on the stack.  Doing that would require generating CFI at
      run time and both registering and deregistering it, which is probably
      not worth doing since it would significantly slow down the call.
      
      	* config/rs6000/morestack.S (__stack_split_initialize),
      	(__morestack_get_guard, __morestack_set_guard),
      	(__morestack_make_guard): Provide CFI covering these functions.
      	* config/rs6000/tramp.S (__trampoline_setup): Likewise.
      
      From-SVN: r266503
      Alan Modra committed
    • [RS6000] PowerPC -mcpu=native support · 28a09576
      The -mcpu=native support has bit-rotted a little, in particular the
      fallback when the native cpu couldn't be determined.  This patch fixes
      the bit-rot and reorganizes ASM_CPU_SPEC so that it should be a little
      easier to keep the -mcpu=native data up to date.
      
      The patch also changes the fix for PR63177 (-mpower9-vector being
      passed by the user when the default is -mpower8) to also apply when
      -mcpu=powerpc64le and -mcpu=native is given.  I'll note that the hack
      for PR63177 should probably be extended to lots of other options, if
      we're going to continue supporting all those sub-architecture options
      (-mpower9-vector, -mpower8-vector, -mcrypto, -mdirect-move, -mhtm,
      -mvsx and others) in the positive sense.  I think those should have
      only been supported in their -mno- variants..
      
      	* config/rs6000/aix71.h (ASM_SPEC): Don't select default -maix64
      	cpu here.
      	(ASM_CPU_SPEC): Do so here.  Rewrite using if .. else if .. specs
      	form.  Error on missing -mcpu case.
      	* config/rs6000/driver-rs6000.c (asm_names <_AIX>): Update NULL case.
      	(asm_names <!_AIX>): Add missing cpus.  Update NULL case.  Apply
      	PR63177 fix for -mcpu=power8 and -mcpu=powerpc64le.
      	* config/rs6000/rs6000.h (ASM_CPU_SPEC): Rewrite using if ..
      	else if .. specs form.  Error on missing -mcpu case.  Don't output
      	duplicate -maltivec.  Apply PR63177 fix for -mcpu=powerpc64le.
      
      From-SVN: r266502
      Alan Modra committed
    • Fix missing dump_impl_location_t values, using a new dump_metadata_t · 3da39f52
      The dump_* API attempts to capture emission location metadata for the
      various dump messages, but looking in -fsave-optimization-record shows
      that many dump messages are lacking useful impl_location values, instead
      having this location within dumpfile.c:
      
                  "impl_location": {
                      "file": "../../src/gcc/dumpfile.c",
                      "function": "ensure_pending_optinfo",
                      "line": 1169
                  },
      
      The problem is that the auto-capturing of dump_impl_location_t is tied to
      dump_location_t, and this is tied to the dump_*_loc calls.  If a message
      comes from a dump_* call without a "_loc" suffix (e.g. dump_printf), the
      current code synthesizes the dump_location_t within
      dump_context::ensure_pending_optinfo, and thus saves the useless
      impl_location seen above.
      
      This patch fixes things by changing the dump_* API so that, rather than
      taking a dump_flags_t, they take a new class dump_metadata_t, which is
      constructed from a dump_flags_t, but captures the emission location.
      
      Hence e.g.:
      
        dump_printf (MSG_NOTE, "some message\n");
      
      implicitly builds a dump_metadata_t wrapping the MSG_NOTE and the
      emission location.  If there are several dump_printf calls without
      a dump_*_loc call, the emission location within the optinfo is that
      of the first dump call within it.
      
      The patch updates selftest::test_capture_of_dump_calls to verify
      that the impl location of various dump_* calls is captured.  I also
      verified things manually.
      
      gcc/ChangeLog:
      	* dump-context.h (dump_context::dump_loc): Convert 1st param from
      	dump_flags_t to const dump_metadata_t &.  Convert 2nd param from
      	const dump_location_t & to const dump_user_location_t &.
      	(dump_context::dump_loc_immediate): Convert 2nd param from
      	const dump_location_t & to const dump_user_location_t &.
      	(dump_context::dump_gimple_stmt): Convert 1st param from
      	dump_flags_t to const dump_metadata_t &.
      	(dump_context::void dump_gimple_stmt_loc): Likewise; convert
      	2nd param from const dump_location_t & to
      	const dump_user_location_t &.
      	(dump_context::dump_gimple_expr): Convert 1st param from
      	dump_flags_t to const dump_metadata_t &.
      	(dump_context::dump_gimple_expr_loc): Likewise; convert
      	2nd param from const dump_location_t & to
      	const dump_user_location_t &.
      	(dump_context::dump_generic_expr): Convert 1st param from
      	dump_flags_t to const dump_metadata_t &.
      	(dump_context::dump_generic_expr_loc): Likewise; convert
      	2nd param from const dump_location_t & to
      	const dump_user_location_t &.
      	(dump_context::dump_printf_va): Convert 1st param from
      	dump_flags_t to const dump_metadata_t &.
      	(dump_context::dump_printf_loc_va): Likewise; convert
      	2nd param from const dump_location_t & to
      	const dump_user_location_t &.
      	(dump_context::dump_dec): Convert 1st param from
      	dump_flags_t to const dump_metadata_t &.
      	(dump_context::dump_symtab_node): Likewise.
      	(dump_context::begin_scope): Split out 2nd param into
      	user and impl locations.
      	(dump_context::ensure_pending_optinfo): Add metadata param.
      	(dump_context::begin_next_optinfo): Replace dump_location_t param
      	with metadata and user location.
      	* dumpfile.c (dump_context::dump_loc): Convert 1st param from
      	dump_flags_t to const dump_metadata_t &.  Convert 2nd param from
      	const dump_location_t & to const dump_user_location_t &.
      	(dump_context::dump_loc_immediate): Convert 2nd param from
      	const dump_location_t & to const dump_user_location_t &.
      	(dump_context::dump_gimple_stmt): Convert 1st param from
      	dump_flags_t to const dump_metadata_t &.
      	(dump_context::void dump_gimple_stmt_loc): Likewise; convert
      	2nd param from const dump_location_t & to
      	const dump_user_location_t &.
      	(dump_context::dump_gimple_expr): Convert 1st param from
      	dump_flags_t to const dump_metadata_t &.
      	(dump_context::dump_gimple_expr_loc): Likewise; convert
      	2nd param from const dump_location_t & to
      	const dump_user_location_t &.
      	(dump_context::dump_generic_expr): Convert 1st param from
      	dump_flags_t to const dump_metadata_t &.
      	(dump_context::dump_generic_expr_loc): Likewise; convert
      	2nd param from const dump_location_t & to
      	const dump_user_location_t &.
      	(dump_context::dump_printf_va): Convert 1st param from
      	dump_flags_t to const dump_metadata_t &.
      	(dump_context::dump_printf_loc_va): Likewise; convert
      	2nd param from const dump_location_t & to
      	const dump_user_location_t &.
      	(dump_context::dump_dec): Convert 1st param from
      	dump_flags_t to const dump_metadata_t &.
      	(dump_context::dump_symtab_node): Likewise.
      	(dump_context::begin_scope): Split out 2nd param into
      	user and impl locations.
      	(dump_context::ensure_pending_optinfo): Add metadata param.
      	(dump_context::begin_next_optinfo): Replace dump_location_t param
      	with metadata and user location.
      	(dump_gimple_stmt): Convert 1st param from dump_flags_t to
      	const dump_metadata_t &.
      	(dump_gimple_stmt_loc): Likewise; convert 2nd param from
      	const dump_location_t & to const dump_user_location_t &.
      	(dump_gimple_expr): Convert 1st param from dump_flags_t to
      	const dump_metadata_t &.
      	(dump_gimple_expr_loc): Likewise; convert 2nd param from
      	const dump_location_t & to const dump_user_location_t &.
      	(dump_generic_expr): Convert 1st param from dump_flags_t to
      	const dump_metadata_t &.
      	(dump_generic_expr_loc): Likewise; convert 2nd param from
      	const dump_location_t & to const dump_user_location_t &.
      	(dump_printf): Convert 1st param from dump_flags_t to
      	const dump_metadata_t &.
      	(dump_printf_loc): Likewise; convert 2nd param from
      	const dump_location_t & to const dump_user_location_t &.
      	(dump_dec): Convert 1st param from dump_flags_t to
      	const dump_metadata_t &.
      	(dump_symtab_node): Likewise.
      	(dump_begin_scope): Split out 2nd param into user and impl
      	locations.
      	(selftest::assert_impl_location_eq): New function.
      	(ASSERT_IMPL_LOCATION_EQ): New macro.
      	(selftest::test_impl_location): Update to use
      	ASSERT_IMPL_LOCATION_EQ.
      	(selftest::test_capture_of_dump_calls): Convert "loc" to
      	dump_user_location_t.  Add ASSERT_IMPL_LOCATION_EQ throughout,
      	verifying line numbers of dump emissions.
      	* dumpfile.h (class dump_metadata_t): New class.
      	(dump_printf): Convert 1st param from dump_flags_t to
      	const dump_metadata_t &.
      	(dump_printf_loc): Likewise; convert 2nd param from
      	const dump_location_t & to const dump_user_location_t &.
      	(dump_generic_expr_loc): Likewise.
      	(dump_generic_expr): Convert 1st param from dump_flags_t to
      	const dump_metadata_t &.
      	(dump_gimple_stmt_loc): Likewise; convert 2nd param from
      	const dump_location_t & to const dump_user_location_t &.
      	(dump_gimple_stmt): Convert 1st param from dump_flags_t to
      	const dump_metadata_t &.
      	(dump_gimple_expr_loc): Likewise; convert 2nd param from
      	const dump_location_t & to const dump_user_location_t &.
      	(dump_gimple_expr): Convert 1st param from dump_flags_t to
      	const dump_metadata_t &.
      	(dump_symtab_node): Likewise.
      	(dump_dec): Likewise.
      	(dump_begin_scope): Split out 2nd param into user and impl
      	locations.
      	(auto_dump_scope::auto_dump_scope): Split "loc" param into a user
      	location and impl_location, and capture the impl_location.
      	(AUTO_DUMP_SCOPE): Rename param from LOC to USER_LOC.
      	* loop-unroll.c (report_unroll): Update for changes to
      	dump_printf_loc and dump_printf.
      	* opt-problem.cc (opt_problem::opt_problem): Update for change to
      	dump_loc.
      	* optinfo-emit-json.cc
      	(selftest::test_building_json_from_dump_calls): Convert "loc" from
      	dump_location_t to dump_user_location_t.
      	* optinfo.cc (optinfo::emit_for_opt_problem): Update for change in
      	dump_loc_immediate.
      	* profile.c (compute_branch_probabilities): Update for change to
      	dump_printf_loc.
      	* selftest.h (ASSERT_STR_CONTAINS_AT): New macro.
      	* tree-vect-slp.c (vect_print_slp_tree): Update for change to
      	dump_printf_loc.
      
      From-SVN: r266501
      David Malcolm committed
    • Tweak directives in GCC tests for msp430-elf · 27c16e61
      2018-11-27  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	Tweak directives in GCC tests for msp430-elf
      
      	gcc/ChangeLog:
      
      	* doc/sourcebuild.texi: Document check_effective_target_int_eq_float
      	and check_effective_target_ptr_eq_long.
      
      	gcc/testsuite/ChangeLog:
      
      	* lib/target-supports.exp
      	(check_effective_target_logical_op_short_circuit): Add msp430.
      	(check_effective_target_int_eq_float): New. 
      	(check_effective_target_ptr_eq_long): New. 
      	* c-c++-common/pr41779.c: Require int_eq_float for dg-warning tests.
      	* c-c++-common/pr57371-2.c: XFAIL optimized dump scan when
      	sizeof (float) != sizeof (int).
      	* gcc.dg/pr84670-4.c: Require ptr_eq_long.
      	* gcc.dg/pr85859.c: Likewise.
      	* gcc.dg/Wno-frame-address.c: Skip for msp430-elf.
      	* gcc.dg/torture/stackalign/builtin-apply-2.c: Likewise.
      	* gcc.dg/ifcvt-4.c: Likewise.
      	* gcc.dg/pr34856.c: Likewise.
      	* gcc.dg/builtin-apply2.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-dse-26.c: Likewise.
      	* gcc.dg/attr-alloc_size-11.c: Remove dg-warning XFAIL for msp430.
      	* gcc.dg/tree-ssa/20040204-1.c: Likewise.
      	* gcc.dg/compat/struct-by-value-16a_x.c: Build at -O1 for msp430
      	so it fits.
      	* gcc.dg/lto/20091013-1_0.c: Require ptr_eq_long.
      	* gcc.dg/lto/20091013-1_1.c: Remove xfail-if for when
      	sizeof(void *) != sizeof(long).
      	* gcc.dg/lto/20091013-1_2.c: Likewise.
      	* gcc.dg/tree-ssa/loop-1.c: Fix expected dg-final behaviour for msp430.
      	* gcc.dg/tree-ssa/gen-vect-25.c: Likewise.
      	* gcc.dg/tree-ssa/gen-vect-11.c: Likewise.
      	* gcc.dg/tree-ssa/loop-35.c: Likewise.
      	* gcc.dg/tree-ssa/pr23455.c: Likewise.
      	* gcc.dg/weak/typeof-2.c: Likewise.
      	* gcc.target/msp430/interrupt_fn_placement.c: Skip for 430 ISA.
      	* gcc.target/msp430/pr78818-data-region.c: Fix scan-assembler text.
      	* gcc.target/msp430/pr79242.c: Don't skip for -msmall.
      	* gcc.target/msp430/special-regs.c: Use "__asm__" instead of "asm".
      
      From-SVN: r266500
      Jozef Lawrynowicz committed
    • Daily bump. · 660254d3
      From-SVN: r266499
      GCC Administrator committed
    • [RS6000] rs6000/sysv4.h using gnu-user.h · 62045234
      This patch removes some duplication in rs6000/sysv4.h of macros found
      in gnu-user.h that we want for linux.  Including gnu-user.h will mean
      powerpc doesn't miss updates to that file.
      
      	* config.gcc (powerpc*-*-freebsd*, powerpc-*-netbsd*),
      	(powerpc-*-eabisimaltivec*, powerpc-*-eabisim*, powerpc-*-elf*),
      	(powerpc-*-eabialtivec*, powerpc-*-eabi*, powerpc-*-rtems*),
      	(powerpc-wrs-vxworks*, powerpc-*-lynxos*, powerpcle-*-elf*),
      	(powerpcle-*-eabisim*, powerpcle-*-eabi*): Add gnu-user.h to tm_file.
      	* config/rs6000/freebsd.h (CPLUSPLUS_CPP_SPEC),
      	(LINK_GCC_C_SEQUENCE_SPEC): Undef.
      	(ASM_APP_ON, ASM_APP_OFF): Don't define.
      	* config/rs6000/freebsd64.h (ASM_APP_ON, ASM_APP_OFF): Don't define.
      	* config/rs6000/lynx.h (ASM_APP_ON, ASM_APP_OFF): Don't define.
      	* config/rs6000/linux64.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
      	* config/rs6000/netbsd.h (CPLUSPLUS_CPP_SPEC),
      	(LINK_GCC_C_SEQUENCE_SPEC): Undef.
      	* config/rs6000/rtems.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
      	* config/rs6000/sysv4.h (GNU_USER_TARGET_CRTI): Redefine.
      	(GNU_USER_TARGET_CRTN): Redefine.
      	(CC1_SPEC): Use GNU_USER_TARGET_CC1_SPEC.
      	(LIB_LINUX_SPEC): Use GNU_USER_TARGET_LIB_SPEC.
      	(CRTOFFLOADBEGIN, CRTOFFLOADEND): Don't define.
      	(STARTFILE_LINUX_SPEC): Define as GNU_USER_TARGET_STARTFILE_SPEC.
      	(ENDFILE_LINUX_SPEC): Define as GNU_USER_TARGET_ENDFILE_SPEC.
      	(UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER): Don't define.
      	(LINK_EH_SPEC): Don't define.
      
      From-SVN: r266496
      Alan Modra committed
  2. 26 Nov, 2018 9 commits
    • PR 87756 - missing unterminated argument warning using address of a constant character · 67b9fab0
      gcc/ChangeLog:
      
      	PR 87756
      	* expr.c (string_constant): Handle top-level decls of all character
      	types and subobjects of narrow character type.
      
      gcc/testsuite/ChangeLog:
      
              PR 87756
      	* gcc.dg/warn-sprintf-no-nul-2.c: Move incomplete tests from here...
      	* gcc.dg/warn-sprintf-no-nul-3.c: ...to here and complete them.
      
      From-SVN: r266494
      Martin Sebor committed
    • [RS6000] Use config/linux.h for powerpc*-*-linux* · 426a04b8
      Using the macros in config/linux.h rather than duplicating them helps
      stop future bitrot, and repairs existing bitrot (4 choices for libc in
      linux.h, fewer in the rs6000 files not that it matters much).  Also
      fixes the fact that __gnu_linux__ was always defined rather than just
      when glibc was the libc of choice.
      
      	* config.gcc (powerpc*-*-linux*): Add linux.h to tm_file.
      	* config/rs6000/linux.h (TARGET_OS_CPP_BUILTINS): Use
      	GNU_USER_TARGET_OS_CPP_BUILTINS.
      	(RS6000_ABI_NAME): Define.
      	* config/rs6000/linux64.h (TARGET_OS_CPP_BUILTINS): Use
      	GNU_USER_TARGET_OS_CPP_BUILTINS.
      	(MUSL_DYNAMIC_LINKER32): Undef before defining.
      	(UCLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER64): Don't define.
      	(CHOOSE_DYNAMIC_LINKER): Don't define.
      	(GNU_USER_DYNAMIC_LINKER32, GNU_USER_DYNAMIC_LINKER64): Don't define.
      	* config/rs6000/sysv4.h (MUSL_DYNAMIC_LINKER): Undef before defining.
      	(CHOOSE_DYNAMIC_LINKER, GNU_USER_DYNAMIC_LINKER): Only define when
      	not already defined.
      	(CPP_OS_LINUX_SPEC): Remove defines and asserts handled by
      	TARGET_OS_CPP_BUILTINS.
      
      From-SVN: r266493
      Alan Modra committed
    • PR c++/88120 - ICE when calling save_expr in a template. · 2426ee77
      	* typeck.c (cp_build_binary_op): Call cp_save_expr instead of
      	save_expr.
      
      	* g++.dg/cpp0x/pr88120.C: New test.
      
      From-SVN: r266492
      Marek Polacek committed
    • Add filters for D language sources to contrib/update-copyright.py · 80de5ef9
      2018-11-26  Iain Buclaw  <ibuclaw@gdcproject.org>
      
      	* update-copyright.py (TestsuiteFilter): Skip .d tests.
      	(LibPhobosFilter): Add filter for upstream D sources.
      	(GCCCopyright): Add D Language Foundation as external author.
      	(GCCCmdLine): Add libphobos.
      
      From-SVN: r266491
      Iain Buclaw committed
    • compiler: initial support for exporting function bodies · 1e4cc1d4
          
          Create a framework for putting function bodies in export data.  At
          present only empty functions will be put there, and they will be
          ignored on import.  Later patches will get this to the point of
          supporting inlining of (some) functions defined in other packages.
          
          Reviewed-on: https://go-review.googlesource.com/c/150061
      
      From-SVN: r266490
      Ian Lance Taylor committed
    • Fix tests for 16-bit int. · 50e99db3
      2018-11-26  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	Fix tests for 16-bit int.
      
      	gcc/testsuite/ChangeLog:
      
      	* c-c++-common/Warray-bounds-3.c (test_strcpy_bounds): Use long instead
      	of int if __SIZEOF_INT__ == 2.
      	* c-c++-common/Wrestrict.c: Test memcpy range with smaller length when
      	__SIZEOF_SIZE_T < 4.
      	* c-c++-common/rotate-8.c: Define smaller "large" constant when
      	__SIZEOF_INT__ == 2.
      	* gcc.dg/pr53037-1.c: Add dg-require-effective-target int32.
      	* gcc.dg/pr53037-2.c: Likewise.
      	* gcc.dg/pr53037-3.c: Likewise.
      	* gcc.dg/pr85512.c: Likewise.
      	* gcc.dg/pr59963-2.c: Add dg-warning for int16.
      	* gcc.dg/sancov/cmp0.c: Explicitly use __INT32_TYPE__ instead of int.
      	* gcc.dg/tree-ssa/addadd.c: Fix dg-final directives for int16.
      	* gcc.dg/tree-ssa/pr79327-2.c: Likewise.
      	* gcc.dg/tree-ssa/builtin-sprintf-2.c: Filter out invalid tests for
      	int16.
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-10.c: Update sizes in dg-warning
      	directives for int16.
      
      From-SVN: r266489
      Jozef Lawrynowicz committed
    • sourcebuild.texi: Document check_effective_target_newlib_nano_io. · 571bbd0d
      2018-11-26  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	gcc/ChangeLog:
      
      	* doc/sourcebuild.texi: Document check_effective_target_newlib_nano_io.
      
      	gcc/testsuite/ChangeLog:
      
      	* lib/target-supports.exp (check_effective_target_newlib_nano_io): New. 
      	* gcc.c-torture/execute/920501-8.c: Register undefined linker symbol
      	_printf_float for newlib_nano_io target.
      	* gcc.c-torture/execute/930513-1.c: Likewise.
      	* gcc.dg/torture/builtin-sprintf.c: Likewise.
      	* gcc.c-torture/execute/ieee/920810-1.x: New.
      
      From-SVN: r266488
      Jozef Lawrynowicz committed
    • re PR target/88195 (misleading error message for unsupported builtin) · 8b1f4e1f
      	PR target/88195
      	* config/i386/i386.c (def_builtin2): If tcode == VOID_FTYPE_UINT64
      	and !TARGET_64BIT, return NULL_TREE.
      
      	* gcc.target/i386/pr88195.c: New test.
      
      From-SVN: r266487
      Jakub Jelinek committed