Commit Graph

163467 Commits

Author SHA1 Message Date
Jan Hubicka
f4290962f7 tree.c (find_decls_types_r): Do not check for redundant typedefs.
* tree.c (find_decls_types_r): Do not check for redundant typedefs.
	* tree.h (is_redundant_typedef): Remove.
	* dwarf2out.c (is_redundant_typedef): Turn into static function.

From-SVN: r263699
2018-08-21 12:32:53 +00:00
Pierre-Marie de Rodat
b649008486 [Ada] Bump copyright notices to 2018
2018-08-21  Pierre-Marie de Rodat  <derodat@adacore.com>

gcc/ada/

	* libgnarl/a-intnam__dragonfly.ads,
	libgnarl/s-osinte__dragonfly.adb,
	libgnarl/s-osinte__dragonfly.ads, libgnarl/s-osinte__gnu.adb,
	libgnarl/s-osinte__gnu.ads, libgnarl/s-osinte__hpux-dce.adb,
	libgnarl/s-osinte__hpux-dce.ads,
	libgnarl/s-taprop__hpux-dce.adb,
	libgnarl/s-taspri__hpux-dce.ads: Bump copyright notices to 2018.

From-SVN: r263698
2018-08-21 11:59:28 +00:00
Jan Hubicka
143b379d89 tree.c (free_lang_data_in_decl): Remove types from DECL_CONTEXT when possible.
* tree.c (free_lang_data_in_decl): Remove types from DECL_CONTEXT
	when possible.

From-SVN: r263697
2018-08-21 10:36:37 +00:00
Tamar Christina
daa9715842 Fix DSE big-endian subreg crash on AArch64.
This patch fixes an ICE that would happen when extract_low_bits
is called with modes for which you can't extract a valid subreg.
e.g. taking a 32 bytes subreg from a 48 byte mode.

The ICE happens because convert_modes which eventually calls
simplify_gen_subreg does not expect the convertion to fail.

The assert in gen_lowpart_general would then be hit.  The patch
changes it to validate the subreg before trying to convert the
modes.  If the subreg is not possible we return NULL_RTX and bail
out early.

gcc/ChangeLog:

2018-08-21  Tamar Christina  <tamar.christina@arm.com>

	* expmed.c (extract_low_bits): Reject invalid subregs early.

gcc/testsuite/ChangeLog:

2018-08-21  Tamar Christina  <tamar.christina@arm.com>

	* gcc.target/aarch64/large_struct_copy.c: New test.

From-SVN: r263696
2018-08-21 09:55:07 +00:00
Jonathan Wakely
25d4036370 Remove redundant { dg-do run } directives in tests
These tests accidentally had two dg-do directives. Only the second one
is needed.

	* testsuite/26_numerics/bit/bitops.count/countl_one.cc: Remove
	redundant dg-do directive.
	* testsuite/26_numerics/bit/bitops.count/countl_zero.cc: Likewise.
	* testsuite/26_numerics/bit/bitops.count/countr_one.cc: Likewise.
	* testsuite/26_numerics/bit/bitops.count/countr_zero.cc: Likewise.
	* testsuite/26_numerics/bit/bitops.count/popcount.cc: Likewise.

From-SVN: r263695
2018-08-21 10:34:26 +01:00
Szabolcs Nagy
2b96783aef Restrict the pr86763 test to *-*-linux* targets
clock_gettime is not available on some baremetal targets
and may require -lrt on some non-linux targets.

gcc/testsuite/ChangeLog:

	* g++.dg/torture/pr86763.C: Restrict to *-*-linux*.

From-SVN: r263694
2018-08-21 09:22:14 +00:00
Bernd Edlinger
7d4ae1fbbf re PR middle-end/86121 (missing -Wstringop-overflow on strcpy followed by strcat)
2018-08-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR middle-end/86121
        * tree-ssa-strlen.c (adjust_last_stmt): Avoid folding away undefined
        behaviour.

testsuite:
2018-08-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR middle-end/86121
        * gcc.dg/Wstringop-overflow-6.c: Remove xfail.

From-SVN: r263693
2018-08-21 08:56:11 +00:00
Rasmus Villemoes
eae016fc70 vxworks: don't define vxworks_asm_out_constructor when using .init_array
When the compiler is configured with --enable-initfini-array,
config/initfini-array.h gets included after config/vxworks.h by tm.h, so
the definitions of TARGET_ASM_CONSTRUTOR/TARGET_ASM_DESTRUCTOR in
vxworks.h get undone in initfini-array.h. Hence, we might as well not
define the vxworks_asm_out_* functions.

From-SVN: r263692
2018-08-21 08:52:40 +00:00
Rasmus Villemoes
ace193dc47 vxworks: enable use of .init_array/.fini_array for cdtors
The target OS actually runs all function pointers found in the _ctors
array when the module is loaded. So it is not that hard to make use of
the "modern" .init_array/.fini_array mechanism - it mostly just requires
a linker script adding the _ctors and _dtors symbols and terminating
LONG(0) entries.

Assume that if the user passed --enable-initfini-array when building
gcc, the rest of the toolchain (including the link spec and linker
script) is set up appropriately.

Note that configuring with --enable-initfini-array may prevent the -mrtp
mode from working, due to the (unconditional) use of .init_array.*
sections instead of .ctors.* - however, that is the case regardless of this
patch.

From-SVN: r263691
2018-08-21 08:50:27 +00:00
Rasmus Villemoes
9a5b8df700 libgcc: add crt{begin,end} for powerpc-wrs-vxworks target
In order to allow ZCX on VxWorks, we need the frame_dummy function to do
the register_frame_info(). So make sure crtbegin.o and crtend.o are
available for use with a custom spec file.

From-SVN: r263690
2018-08-21 08:49:15 +00:00
Rasmus Villemoes
6b19ff66a8 vxworks: add target/h/wrn/coreip to the set of system include paths
In order to build crtstuff.c, I need to ensure the headers in
target/h/wrn/coreip are also searched. Of course, that can be done
similar to how wrn/coreip gets manually added for libgcc, e.g. by adding

  CRTSTUFF_T_CFLAGS += -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip

But without target/h/wrn/coreip in the default search path, all
user-code that include <unistd.h> (crtstuff.c just being one such
example) will have to manually add an -isystem
flag adding the wrn/coreip directory: unistd.h include ioLib.h, which
has

#include "net/uio.h"

and that header is found in target/h/wrn/coreip. In other words, the
VxWorks system headers (at least for VxWorks 5.5) are written in a way
that assumes wrn/coreip is in the search path, so I think it makes sense
to have that by default.

It will change the search order for existing setups that pass
-I.../target/h/wrn/coreip (without -nostdinc), since that flag will now
be ignored. I can't know whether that will break anything, but I do
believe it makes sense to have the defaults actually usable without
expecting all invocations to add -I/-isystem flags.

From-SVN: r263689
2018-08-21 08:47:41 +00:00
Bernd Edlinger
6b2ffa6a42 gimple-ssa-sprintf.c (decl_constant_value): Remove.
2018-08-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * gimple-ssa-sprintf.c (decl_constant_value): Remove.
        (get_format_string): Refer to c_getstr.

From-SVN: r263688
2018-08-21 08:16:19 +00:00
Tom de Vries
efd9eb2979 [debug] Add debug and earlydebug dumps
With the introduction of early debug, we've added a phase in the compiler which
produces information which is not visible, unless we run the compiler in the
debugger and call debug_dwarf from dwarf2out_early_finish or some such.

This patch adds dumping of "early" and "final" debug info, into .earlydebug
and .debug dump files, enabled by -fdump-earlydebug and -fdumpdebug, such that
we can follow f.i. the upper bound of a vla type from early debug:
...
          DW_AT_upper_bound: location descriptor:
            (0x7f0d645b7550) DW_OP_GNU_variable_value , 0
...
to final debug:
...
          DW_AT_upper_bound: location descriptor:
            (0x7f0d645b7550) DW_OP_fbreg 18446744073709551592, 0
            (0x7f0d645b7a00) DW_OP_deref 8, 0
...
to -dA annotated assembly file:
...
        .uleb128 0x3    # DW_AT_upper_bound
        .byte   0x91    # DW_OP_fbreg
        .sleb128 -24
        .byte   0x6     # DW_OP_deref
...

The .debug file shows the same information as the annotated assembly, but in
the same format as the "early" debug info.

Bootstrapped and reg-tested on x86_64.

2018-08-21  Tom de Vries  <tdevries@suse.de>

	* cgraph.h (debuginfo_early_init, debuginfo_init, debuginfo_fini)
	(debuginfo_start, debuginfo_stop, debuginfo_early_start)
	(debuginfo_early_stop): Declare.
	* cgraphunit.c (debuginfo_early_init, debuginfo_init, debuginfo_fini)
	(debuginfo_start, debuginfo_stop, debuginfo_early_start)
	(debuginfo_early_stop): New function.
	(symbol_table::finalize_compilation_unit): Call debuginfo_early_start
	and debuginfo_early_stop.
	* dwarf2out.c (dwarf2out_finish, dwarf2out_early_finish): Dump dwarf.
	* toplev.c (compile_file): Call debuginfo_start and debuginfo_stop.
	(general_init): Call debuginfo_early_init.
	(finalize): Call debuginfo_fini.
	(do_compile): Call debuginfo_init.
	* doc/invoke.texi (@gccoptlist): Add -fdump-debug and
	-fdump-early-debug.
	(@item -fdump-debug, @item -fdump-earlydebug): Add.

	* lto.c (lto_main):  Call debuginfo_early_start and
	debuginfo_early_stop.

	* gcc.c-torture/unsorted/dump-noaddr.x: Use -gno-record-gcc-switches
	to avoid mismatch in .debug and .earlydebug dump files.

From-SVN: r263687
2018-08-21 07:39:29 +00:00
Tom de Vries
916f27adfd [debug] Respect fdump-noaddr and fdump-unnumbered in print_die
2018-08-21  Tom de Vries  <tdevries@suse.de>

	* dwarf2out.c (print_dw_val, print_loc_descr, print_die): Handle
	flag_dump_noaddr and flag_dump_unnumbered.

From-SVN: r263686
2018-08-21 07:39:17 +00:00
Aldy Hernandez
70eff70551 wide-int-range.cc (wide_int_range_abs): New.
* wide-int-range.cc (wide_int_range_abs): New.
	(wide_int_range_order_set): Rename from wide_int_range_min_max.
	* wide-int-range.h (wide_int_range_abs): New.
	(wide_int_range_min_max): New.
	* tree-vrp.c (extract_range_from_unary_expr): Rewrite ABS_EXPR
	case to call wide_int_range_abs.
	Rewrite MIN/MAX_EXPR to call wide_int_range_min_max.
	(extract_range_from_abs_expr): Delete.

From-SVN: r263685
2018-08-21 06:27:14 +00:00
GCC Administrator
316a03a633 Daily bump.
From-SVN: r263683
2018-08-21 00:16:17 +00:00
Nathan Sidwell
5c12a85534 [libiberty patch] PEX-unix forking
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01170.html
	* pex-unix.c (pex_child_error): Delete.
	(pex_unix_exec_child): Commonize error paths to single message &
	exit.

From-SVN: r263679
2018-08-21 00:01:50 +00:00
Michael Meissner
a7e94dc09a re PR target/87033 (The compiler does not generate the LWAX instruction)
[gcc]
2018-08-20  Michael Meissner  <meissner@linux.ibm.com>

	PR target/87033
	* config/rs6000/rs6000.md (extendsi<mode>2): Change constraints
	from 'Y' to 'YZ' to enable the LWAX instruction to be generated
	for indexed loads.

[gcc/testsuite]
2018-08-20  Michael Meissner  <meissner@linux.ibm.com>

	PR target/87033
	* gcc.target/powerpc/pr87033.c: New test.

From-SVN: r263678
2018-08-20 23:46:37 +00:00
Nathan Sidwell
fe7a679e8c [PATCH] fix some build breakage
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01214.html
	* config/s390/s390-c (s390_macro_to_expand): Use cpp_macro_p.
	* config/spu/spu-c.c (spu_macro_to_expand): Likewise.

Co-Authored-By: Jeff Law <law@redhat.com>

From-SVN: r263677
2018-08-20 23:31:18 +00:00
Martin Sebor
56c6d26731 PR tree-optimization/87034 - missing -Wformat-overflow on a sprintf %s with a wide string
gcc/testsuite/ChangeLog:
	* gcc.dg/builtin-sprintf-warn-20.c: New test.

From-SVN: r263676
2018-08-20 17:03:55 -06:00
David Malcolm
097f82ec9d Add support for grouping of related diagnostics (PR other/84889)
We often emit logically-related groups of diagnostics.

A relatively simple case is this:

  if (warning_at (body_loc, OPT_Wmultistatement_macros,
                  "macro expands to multiple statements"))
    inform (guard_loc, "some parts of macro expansion are not guarded by "
            "this %qs clause", guard_tinfo_to_string (keyword));

where the "note" diagnostic issued by the "inform" call
is guarded by the -Wmultistatement_macros warning.

More complicated examples can be seen in the C++ frontend,
where e.g. print_z_candidates can lead to numerous "note"
diagnostics being emitted.

I'm looking at various ways to improve how we handle such related
diagnostics, but, prior to this patch, there was no explicit
relationship between these diagnostics: the diagnostics subsystem
had no way of "knowing" that these were related.

This patch introduces a simple way to group the diagnostics:
an auto_diagnostic_group class: all diagnostics emitted within
the lifetime of an auto_diagnostic_group instance are logically
grouped.

Hence in the above example, the two diagnostics can be grouped
by simply adding an auto_diagnostic_group instance:

  auto_diagnostic_group d;
  if (warning_at (body_loc, OPT_Wmultistatement_macros,
                  "macro expands to multiple statements"))
    inform (guard_loc, "some parts of macro expansion are not guarded by "
            "this %qs clause", guard_tinfo_to_string (keyword));

Some more awkard cases are of the form:

  if (some_condition
      && warning_at (...)
      && more_conditions)
    inform (...);

which thus need restructuring to:

  if (some_condition)
    {
      auto_diagnostic_group d;
      warning_at (...);
      if (more_conditions)
        inform (...);
    }

so that the lifetime of the auto_diagnostic_group groups the
warning_at and the inform call.

Nesting is handled by simply tracking a nesting depth within the
diagnostic_context.: all diagnostics are treated as grouped until the
final auto_diagnostic_group is popped.

diagnostic.c uses this internally, so that all diagnostics are part of
a group - those that are "by themselves" are treated as being part of
a group with one element.

The diagnostic_context gains optional callbacks for displaying the
start of a group (when the first diagnostic is emitted within it), and
the end of a group (for when the group was non-empty); these callbacks
are unused by default, but a test plugin demonstrates them (and verifies
that the machinery is working).

As noted above, I'm looking at various ways to use the grouping to
improve how we output the diagnostics.

FWIW, I experimented with a more involved implementation, of the form:

  diagnostic_group d;
  if (d.warning_at (body_loc, OPT_Wmultistatement_macros,
                    "macro expands to multiple statements"))
    d.inform (guard_loc, "some parts of macro expansion are not guarded by "
              "this %qs clause", guard_tinfo_to_string (keyword));

which had the advantage of allowing auto-detection of the places where
groups were needed (by converting ::warning_at's return type to bool),
but it was a much more invasive patch, especially when dealing with
the places in the C++ frontend that can emit numerous notes after
an error or warning (and thus having to pass the group around)
Hence I went with this simpler approach.

gcc/c-family/ChangeLog:
	PR other/84889
	* c-attribs.c (common_handle_aligned_attribute): Add
	auto_diagnostic_group instance.
	* c-indentation.c (warn_for_misleading_indentation): Likewise.
	* c-opts.c (c_common_post_options): Likewise.
	* c-warn.c (warn_logical_not_parentheses): Likewise.
	(warn_duplicated_cond_add_or_warn): Likewise.
	(warn_for_multistatement_macros): Likewise.

gcc/c/ChangeLog:
	PR other/84889
	* c-decl.c (pushtag): Add auto_diagnostic_group instance.
	(diagnose_mismatched_decls): Likewise, in various places.
	(warn_if_shadowing): Likewise.
	(implicit_decl_warning): Likewise.
	(implicitly_declare): Likewise.
	(undeclared_variable): Likewise.
	(declare_label): Likewise.
	(grokdeclarator): Likewise.
	(start_function): Likewise.
	* c-parser.c (c_parser_declaration_or_fndef): Likewise.
	(c_parser_parameter_declaration): Likewise.
	(c_parser_binary_expression): Likewise.
	* c-typeck.c (c_expr_sizeof_expr): Likewise.
	(parser_build_binary_op): Likewise.
	(build_unary_op): Likewise.
	(error_init): Likewise.
	(pedwarn_init): Likewise.
	(warning_init): Likewise.
	(convert_for_assignment): Likewise.

gcc/cp/ChangeLog:
	PR other/84889
	* call.c (build_user_type_conversion_1): Add auto_diagnostic_group
	instance(s).
	(print_error_for_call_failure): Likewise.
	(build_op_call_1): Likewise.
	(build_conditional_expr_1): Likewise.
	(build_new_op_1): Likewise.
	(build_op_delete_call): Likewise.
	(convert_like_real): Likewise.
	(build_over_call): Likewise.
	(build_new_method_call_1): Likewise.
	(joust): Likewise.
	* class.c (check_tag): Likewise.
	(finish_struct_anon_r): Likewise.
	(one_inherited_ctor): Likewise.
	(finalize_literal_type_property): Likewise.
	(explain_non_literal_class): Likewise.
	(find_flexarrays): Likewise.
	(resolve_address_of_overloaded_function): Likewise.
	* constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
	(is_valid_constexpr_fn): Likewise.
	(cx_check_missing_mem_inits): Likewise.
	* cp-gimplify.c (cp_genericize_r): Likewise.
	* cvt.c (maybe_warn_nodiscard): Likewise.
	* decl.c (warn_extern_redeclared_static): Likewise.
	(check_redeclaration_exception_specification): Likewise.
	(check_no_redeclaration_friend_default_args): Likewise.
	(duplicate_decls): Likewise.
	(redeclaration_error_message): Likewise.
	(warn_misplaced_attr_for_class_type): Likewise.
	* decl2.c (finish_static_data_member_decl): Likewise.
	(no_linkage_error): Likewise.
	(cp_warn_deprecated_use): Likewise.
	* error.c (qualified_name_lookup_error): Likewise.
	* friend.c (make_friend_class): Likewise.
	(do_friend): Likewise.
	* init.c (perform_member_init): Likewise.
	(build_new_1): Likewise.
	(build_vec_delete_1): Likewise.
	(build_delete): Likewise.
	* lex.c (unqualified_name_lookup_error): Likewise.
	* name-lookup.c (check_extern_c_conflict): Likewise.
	(inform_shadowed): New function.
	(check_local_shadow): Add auto_diagnostic_group instances,
	replacing goto "inform_shadowed" label with call to subroutine.
	(set_local_extern_decl_linkage): Add auto_diagnostic_group
	instance(s).
	* parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
	(cp_parser_namespace_name): Likewise.
	* pt.c (check_specialization_namespace): Likewise.
	(check_template_variable): Likewise.
	(warn_spec_missing_attributes): Likewise.
	(check_explicit_specialization): Likewise.
	(process_partial_specialization): Likewise.
	(lookup_template_class_1): Likewise.
	(finish_template_variable): Likewise.
	(do_auto_deduction): Likewise.
	* search.c (check_final_overrider): Likewise.
	(look_for_overrides_r): Likewise.
	* tree.c (maybe_warn_parm_abi): Likewise.
	* typeck.c (cxx_sizeof_expr): Likewise.
	(cp_build_function_call_vec): Likewise.
	(cp_build_binary_op): Likewise.
	(convert_for_assignment): Likewise.
	(maybe_warn_about_returning_address_of_local): Likewise.
	* typeck2.c (abstract_virtuals_error_sfinae): Likewise.
	(check_narrowing): Likewise.

gcc/ChangeLog:
	PR other/84889
	* attribs.c (diag_attr_exclusions): Add auto_diagnostic_group instance.
	(decl_attributes): Likewise.
	* calls.c (maybe_warn_nonstring_arg): Add auto_diagnostic_group
	instance.
	* cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
	* diagnostic-core.h (class auto_diagnostic_group): New class.
	* diagnostic.c (diagnostic_initialize): Initialize the new fields.
	(diagnostic_report_diagnostic): Handle the first diagnostics within
	a group.
	(emit_diagnostic): Add auto_diagnostic_group instance.
	(inform): Likewise.
	(inform_n): Likewise.
	(warning): Likewise.
	(warning_at): Likewise.
	(warning_n): Likewise.
	(pedwarn): Likewise.
	(permerror): Likewise.
	(error): Likewise.
	(error_n): Likewise.
	(error_at): Likewise.
	(sorry): Likewise.
	(fatal_error): Likewise.
	(internal_error): Likewise.
	(internal_error_no_backtrace): Likewise.
	(auto_diagnostic_group::auto_diagnostic_group): New ctor.
	(auto_diagnostic_group::~auto_diagnostic_group): New dtor.
	* diagnostic.h (struct diagnostic_context): Add fields
	"diagnostic_group_nesting_depth",
	"diagnostic_group_emission_count", "begin_group_cb",
	"end_group_cb".
	* gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior):
	Add auto_diagnostic_group instance(s).
	(find_explicit_erroneous_behavior): Likewise.
	* gimple-ssa-warn-alloca.c (pass_walloca::execute): Likewise.
	* gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Likewise.
	* gimplify.c (warn_implicit_fallthrough_r): Likewise.
	(gimplify_va_arg_expr): Likewise.
	* hsa-gen.c (HSA_SORRY_ATV): Likewise.
	(HSA_SORRY_AT): Likewise.
	* ipa-devirt.c (compare_virtual_tables): Likewise.
	(warn_odr): Likewise.
	* multiple_target.c (expand_target_clones): Likewise.
	* opts-common.c (cmdline_handle_error): Likewise.
	* reginfo.c (globalize_reg): Likewise.
	* substring-locations.c (format_warning_n_va): Likewise.
	* tree-inline.c (expand_call_inline): Likewise.
	* tree-ssa-ccp.c (pass_post_ipa_warn::execute): Likewise.
	* tree-ssa-loop-niter.c
	(do_warn_aggressive_loop_optimizations): Likewise.
	* tree-ssa-uninit.c (warn_uninit): Likewise.
	* tree.c (warn_deprecated_use): Likewise.

gcc/testsuite/ChangeLog:
	PR other/84889
	* gcc.dg/plugin/diagnostic-group-test-1.c: New test.
	* gcc.dg/plugin/diagnostic_group_plugin.c: New test.
	* gcc.dg/plugin/plugin.exp (plugin_test_list): Add the new tests.

From-SVN: r263675
2018-08-20 21:06:46 +00:00
H.J. Lu
a31505a339 x86: Always update EH return address in word_mode
On x86, return address is always popped in word_mode.  eh_return needs
to put EH return address in word_mode on stack.

gcc/

	PR target/87014
	* config/i386/i386.md (eh_return): Always update EH return
	address in word_mode.

gcc/testsuite/

	PR target/87014
	* g++.dg/torture/pr87014.C: New file.

From-SVN: r263672
2018-08-20 12:14:04 -07:00
Chung-Lin Tang
846d943b45 targhooks.c (std_gimplify_va_arg_expr): Properly handle case of when TARGET_SPLIT_COMPLEX_ARG is defined.
* targhooks.c (std_gimplify_va_arg_expr): Properly handle case of when
	TARGET_SPLIT_COMPLEX_ARG is defined.

From-SVN: r263671
2018-08-20 12:32:06 -06:00
Nathan Sidwell
a5a3524717 [CPP PATCH] node field bits
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01171.html
	* include/cpplib.h: Fixup some whitespace.
	(cpp_hashnode): Reduce type to 2 bit & flags to 8.

From-SVN: r263669
2018-08-20 17:45:42 +00:00
Nathan Sidwell
a570d97f5b [CPP PATCH] node type
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01164.html
	* include/cpplib.h (NODE_BUILTIN, NODE_MACRO_ARG): Delete.
	Renumber others.
	(enum node_type): Replace NT_MACRO with NT_USER_MACRO,
	NT_BUILTIN_MACRO, NT_MACRO_ARG.  Delete NT_ASSERTION.
	(NTV_MACRO, NTV_ANSWER, NTV_BUILTIN, NTV_ARGUMENT, NTV_NONE):
	Delete.
	(CPP_HASHNODE_VALUE_IDX): Delete.
	(union _cpp_hashnode_value): GTY tag from enum node_type directly.
	(struct cpp_hashnode): Adjust GTY desc for value field.
	(cpp_user_macro_p, cpp_builtin_macro_p, cpp_macro_p): Adjust.
	* directives.c (undefine_macros): Clear value.anwers, adjust flag
	clearing.
	(_cpp_test_assertion): No need to check NT_ASSERTION.
	(do_assert, do_unassert): Likewise.
	* init.c (cpp_init_special_builtins): Set type not flags.
	* macro.c (struct macro_arg_saved_data): Add type field.
	(cpp_get_token_1): Check type not NT_VOID.
	(_cpp_free_definition): Adjust flag clearing.  Nullify
	value.answers.
	(_cpp_save_parameter, _cpp_unsave_parameters): Save and restore
	type.
	(lex_expansion_token): Check type not flags.
	(_cpp_create_definition): Set type to NT_USER_MACRO.
	(_cpp_notify_macro_use): Adjust type checking.
	* pch.c (write_macdef, count_defs, write_defs, cpp_valid_state)
	(save_macros): Adjust node type/flag handling.
	* traditional.c (_cpp_scan_out_logical_line): Check type not flags.

From-SVN: r263667
2018-08-20 16:32:29 +00:00
Nathan Sidwell
7692e253ee [CPP PATCH] Fix warning & other cleanups.
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01162.html
	* directives.c (do_undef): Use cpp_macro_p & cpp_builtin_macro_p.
	* include/cpplib.h (enum cpp_macro_kind): Remove trailing comma.
	(cpp_fun_like_macro_p): Make inline, define.
	* macro.c (cpp_define_lazily): Use UCHAR_MAX.
	(cpp_fun_like_macro_p): Delete.

From-SVN: r263666
2018-08-20 15:28:15 +00:00
Bernd Edlinger
e11b709d21 expr.c (store_field): Change gcc_assert to gcc_checking_assert.
2018-08-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
 
	* expr.c (store_field): Change gcc_assert to gcc_checking_assert.

From-SVN: r263665
2018-08-20 15:01:04 +00:00
Bernd Edlinger
be3cfb9da5 re PR target/86984 (invalid relocation accessing a const char array)
PR target/86984
	* expr.c (expand_assignment): Assert that bitpos is positive.
	(store_field): Likewise
	(expand_expr_real_1): Make sure that bitpos is positive.
	* config/alpha/alpha.h (CONSTANT_ADDRESS_P): Avoid signed
	integer overflow.

	PR target/86984
	* gcc.target/alpha/pr86984.c: New test.

From-SVN: r263664
2018-08-20 08:20:59 -06:00
Nathan Sidwell
abcd1775e0 [PATCH] Kill cpp-id-data.h
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01149.html
	libcpp/
	* Makefile.in (TAGS_SOURCES): Remove cpp-id-data.h.
	* include/cpp-id-data.h: Delete.
	* internal.h: Include cpplib.h not cpp-id-data.h.
	gcc/
	* Makefile.in (CPP_ID_DATA_H): Delete.
	(CPP_INTERNAL_H): Don't add it.
	(GTFILES): Replace CPP_ID_DATA_H with CPPLIB_H.
	* gengtype.c (open_base_files): Replace cpp-id-data.h with cpplib.h

From-SVN: r263663
2018-08-20 14:20:04 +00:00
Richard Biener
4864297f78 re PR c++/78655 (gcc doesn't exploit the fact that the result of pointer addition can not be nullptr)
2018-08-20  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/78655
	* tree-vrp.c (extract_range_from_binary_expr_1): Make
	pointer + offset nonnull if either operand is nonnull work.

	* gcc.dg/tree-ssa/evrp11.c: New testcase.

From-SVN: r263662
2018-08-20 14:01:05 +00:00
Jonathan Wakely
a2c5e1ae59 PR libstdc++/86963 Remove use of __tuple_base in std::tuple
The _Tuple_impl base class can be used to disable copy/move assignment,
without requiring an extra base class.

Exception specifications on std::tuple assignment and swap functions can
be defined directly using is_nothrow_swappable, instead of querying the
base classes.

	PR libstdc++/86963
	* include/std/tuple (_Tuple_impl::operator=): Define as deleted.
	(_Tuple_impl::_M_assign): New functions to perform assignment instead
	of assignment operators.
	(_Tuple_impl::_M_swap): Remove exception specification.
	(_Tuple_impl<_Idx, _Head>): Likewise.
	(_TC::_NonNestedTuple, _TC::_NotSameTuple): Use __remove_cvref_t.
	(__tuple_base): Remove.
	(tuple, tuple<_T1, _T2>): Remove inheritance from __tuple_base.
	(tuple::operator=, tuple<_T1, _T2>::operator=): Call _M_assign.
	(tuple::swap, tuple<_T1, _T2>::swap): Define exception specification
	using __is_nothrow_swappable.
	(tuple<_T1, _T2>::tuple(_U1&&, _U2&&)): Use __remove_cvref_t.

From-SVN: r263661
2018-08-20 14:53:56 +01:00
Tom de Vries
ea379c9ec3 [debug] Fix handling of vlas in lto
Atm, when running vla-1.c with -O0 -flto, we have:
...
FAIL: gcc.dg/guality/vla-1.c -O0 -flto -fuse-linker-plugin \
  -fno-fat-lto-objects line 17 sizeof (a) == 6
...

The vla a[i + 1] in f1 is gimplified into:
...
f1 (int i)
{
  char a[0:D.1922] [value-expr: *a.0];
  char[0:D.1922] * a.0;

  D.1921 = i + 1;
  D.1926 = (sizetype) D.1921;
  a.0 = __builtin_alloca_with_align (D.1926, 8);
...

The early debug info for the upper bound of the type of vla a that we stream
out is:
...
  DIE    0: DW_TAG_subrange_type (0x7f85029a90f0)
    DW_AT_upper_bound: location descriptor:
      (0x7f85029a9230) DW_OP_GNU_variable_value die -> 0 (0x7f85029a94b0), 0
  DIE    0: DW_TAG_variable (0x7f85029a94b0)
    DW_AT_name: "D.1922"
    DW_AT_type: die -> 0 (0x7f85029a3d70)
    DW_AT_artificial: 1
...

and in ltrans we have for that same upper bound:
...
  DIE    0: DW_TAG_subrange_type (0x7f5183b57d70)
    DW_AT_upper_bound: die -> 0 (0x7f5183b576e0)
  DIE    0: DW_TAG_variable (0x7f5183b576e0)
    DW_AT_name: "D.4278"
    DW_AT_abstract_origin: die -> label: vla_1.c.6719312a + 193 (0x7f5183b57730)
...
where D.4278 has abstract origin D.1922.

The D.4278 die has no DW_AT_location, so when evaluting "sizeof (a)" in the
debugger, we can't find the information to get the value of D.4278, and the
debugger prints "<optimized out>".

This patch fixes that by either:
- adding DW_AT_location to the referenced variable die, or
- instead of using a ref for the upper bound, using an exprloc.

When changing gcc.dg/guality/guality.exp to run the usual flto flavours
"-fno-use-linker-plugin -flto-partition=none" and "-fuse-linker-plugin
-fno-fat-lto-objects" in combination with O0, Og, O1, O2, O3 and Os, this patch
fixes all (20) failures in vla-1.c, leaving only:
...
No symbol "i" in current context.
UNSUPPORTED: gcc.dg/guality/vla-1.c  -O3 -flto -fno-use-linker-plugin \
  -flto-partition=none line 17 i == 5
'a' has unknown type; cast it to its declared type
UNSUPPORTED: gcc.dg/guality/vla-1.c  -O3 -flto -fno-use-linker-plugin \
  -flto-partition=none line 17 sizeof (a) == 6
...

Bootstrapped and reg-tested on x86_64.

2018-08-20  Tom de Vries  <tdevries@suse.de>

	* dwarf2out.c (add_scalar_info): Don't add reference to existing die
	unless the referenced die describes the added property using
	DW_AT_location or DW_AT_const_value.  Fall back to exprloc case.
	Otherwise, add a DW_AT_location to the referenced die.

From-SVN: r263660
2018-08-20 13:52:29 +00:00
Nathan Sidwell
3fb558b154 [PATCH] #assert becomes macro-like
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01140.html
	libcpp/
	* include/cpp-id-data.h (struct answer): Delete.
	* include/cpplib.h (struct answer): Don't forward-declare.
	(enum cpp_macro_kind): Add cmk_assert.
	(struct cpp_macro): Union parms and next assert chain.
	(union _cpp_hashnode_value): 'answer' field is cpp_macro.
	* directives.c (parse_answer): Convert to use cpp_macro. Return
	true on success. 
	(parse_assertion, find_answer, _cpp_test_assertion, cpp_do_assert)
	(cpp_do_unassert): Convert to use cpp_macro.
	* macro.c (warn_of_redefinition, _cpp_new_macro)
	(check_trad_stringification, cpp_macro_definition): Adjust macro
	parm access.
	* traditional.c (_cpp_replacement_text_len)
	(_cpp_copy_replacement_text, _cpp_create_trad_definition): Likewise.
	gcc/c-family/
	* c-ada-spec.c (macro_length, dump_ada_macros): Adjust macro parm
	access.

From-SVN: r263658
2018-08-20 12:39:36 +00:00
Jonathan Wakely
b655b8fc7e Refactor std::optional SFINAE constraints
* include/std/optional (_Optional_payload): Use variable templates
	for conditions in default template arguments and exception
	specifications.
	(optional): Likewise. Adjust indentation.
	(optional::__not_self, optional::__not_tag, optional::_Requires): New
	SFINAE helpers.
	(optional::optional): Use new helpers in constructor constraints.
	* include/std/type_traits (__or_v, __and_v): New variable templates.
	* testsuite/20_util/optional/cons/value_neg.cc: Change dg-error to
	dg-prune-output. Remove unused header.

From-SVN: r263657
2018-08-20 13:13:25 +01:00
GCC Administrator
285ee4d029 Daily bump.
From-SVN: r263656
2018-08-20 00:16:26 +00:00
Uros Bizjak
c6067437d3 re PR target/86994 (64-bit gcc.target/i386/20040112-1.c FAILs)
PR target/86994
	* config/i386/i386.c (ix86_rtx_costs) [case SET]: Check source for
	register_operand when calling ix86_set_reg_reg_cost.
	[case CONST_INT, case CONST, case LABEL_REF, case SYMBOL_REF]:
	Set *total to 0 for operands that satisfy x86_64_immediate_operand
	predicate and to 1 otherwise.

From-SVN: r263652
2018-08-19 21:10:37 +02:00
GCC Administrator
49ad7eb556 Daily bump.
From-SVN: r263651
2018-08-19 00:16:19 +00:00
François Dumont
6672e849b8 86658.cc: Use dg-options to define _GLIBCXX_DEBUG.
2018-08-18  François Dumont  <fdumont@gcc.gnu.org>

	* testsuite/25_algorithms/copy/86658.cc: Use dg-options to define
	_GLIBCXX_DEBUG.

From-SVN: r263647
2018-08-18 20:01:14 +00:00
Iain Sandoe
afc8ff31b0 Darwin emits pubnames/types by default which mask the intent of the test.
gcc/testsuite

2018-08-18  Iain Sandoe  <iain@sandoe.co.uk>

	* gcc.dg/debug/dwarf2/pr80263.c: Suppress pubtypes output
	for Darwin.

From-SVN: r263646
2018-08-18 09:24:55 +00:00
Iain Sandoe
c7a52e72da Darwin does not support gsplit-dwarf.
2018-08-18  Iain Sandoe  <iain@sandoe.co.uk>

gcc/

	* config/darwin.c (darwin_override_options): If -gsplit-dwarf is set,
	emit a diagnostic that it is not supported and reset the option.
	* config/darwin.h (DRIVER_SELF_SPECS): Note that gsplit-dwarf is not
	supported and consume the option.  (ASM_FINAL_SPEC): New.

gcc/testsuite

	* g++.dg/debug/dwarf2/pr85302.C: Skip unsupported split DWARF
	test on Darwin.
	* g++.dg/debug/dwarf2/pr85302.C: Likewise.
	* gcc.dg/lto/pr83719_0.c: Likewise.

From-SVN: r263645
2018-08-18 09:15:05 +00:00
GCC Administrator
2ed3a817c8 Daily bump.
From-SVN: r263644
2018-08-18 00:16:26 +00:00
Nathan Sidwell
800c0e9877 [PATCH] Adjust lazy macro definition
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01072.html
	libcpp/
	* include/cpplib.h (struct cpp_callbacks): Replace
	user_builtin_macro with user_lazy_macro.
	(struct cpp_macro): add lazy field.
	(enum cpp_builtin_type): Remove BT_FIRST_USER, BT_LAST_USER.
	(cpp_define_lazily): Declare.
	* macro.c (enter_macro_context) Use _cpp_maybe_notify_macro_use.
	(warn_of_redefinition): Use cpp_builtin_macro_p, directly call
	user_lazy_macro hook.
	(_cpp_new_macro): Clear lazy field.
	(cpp_define_lazily): Define.
	(_cpp_notify_macro_use): Adjust lazy definition code.
	(cpp_macro_definition): No need to do lazy definition here.
	* pch.c (write_macdef, save_macros): Likewise.
	gcc/c-family/
	* c-cppbuiltin.c (struct lazy_hex_fp_value_struct): Remove macro
	field.
	(laxy_hex_fp_value_count): Make unsigned.
	(lazy_hex_fp_value): Provided with macro & lazy number.  Directly
	manipulate the macro.
	(builtin_defin_with_hex_fp_value): Adjust callback name, use
	cpp_define_lazily.

From-SVN: r263640
2018-08-17 23:18:11 +00:00
Martin Sebor
6f0821f446 re PR testsuite/86996 (gcc.dg/tree-ssa/builtin-sprintf-warn-1.c FAILs)
PR testsuite/86996

gcc/testsuite/CHangeLog:
	* gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Adjust.

From-SVN: r263636
2018-08-17 15:58:27 -06:00
David Malcolm
505ce5abd4 C++: -Wwrite-strings: use location of string constant
Consider:

extern int callee (const char *one, char *two, const char *three);

int test ()
{
  return callee ("first", "second", "third");
}

for which -Wwrite-strings was emitting:

Wwrite-strings.C: In function 'int test()':
Wwrite-strings.C:10:44: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
10 |   return callee ("first", "second", "third");
   |                                            ^

This patch fixes the warning so that it underlines the pertinent argument
at the callsite:

Wwrite-strings.C: In function 'int test()':
Wwrite-strings.C:10:27: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
10 |   return callee ("first", "second", "third");
   |                           ^~~~~~~~

Ideally we ought to also issue a "note" highlighting the pertinent
parameter within the decl, but that's not readily available, so I'm
saving it for another patch.

gcc/cp/ChangeLog:
	* typeck.c (string_conv_p): Extract location from EXP and use it
	in preference to input_location when issuing warnings.

gcc/testsuite/ChangeLog:
	* g++.dg/conversion/Wwrite-strings.C: New test.

From-SVN: r263635
2018-08-17 21:56:21 +00:00
Segher Boessenkool
8bdea5282f doc: Use @ref, not @xref, in the middle of a sentence
makeinfo warns about this.


	* doc/md.texi (Patterns): Use @ref instead of @xref in the middle of
	a sentence.

From-SVN: r263633
2018-08-17 21:35:18 +02:00
Sandra Loosemore
661d1750b3 2018-08-17 Sandra Loosemore <sandra@codesourcery.com>
MAINTAINERS: Add c-sky port maintainers.

From-SVN: r263632
2018-08-17 15:18:38 -04:00
Jojo
4cd0bc3b69 C-SKY port: libgcc
2018-08-17  Jojo  <jijie_rong@c-sky.com>
	    Huibin Wang  <huibin_wang@c-sky.com>
	    Sandra Loosemore  <sandra@codesourcery.com>
	    Chung-Lin Tang  <cltang@codesourcery.com>

	C-SKY port: libgcc

	libgcc/
	* config.host: Add C-SKY support.
	* config/csky/*: New.

Co-Authored-By: Chung-Lin Tang <cltang@codesourcery.com>
Co-Authored-By: Huibin Wang <huibin_wang@c-sky.com>
Co-Authored-By: Sandra Loosemore <sandra@codesourcery.com>

From-SVN: r263631
2018-08-17 15:08:27 -04:00
Sandra Loosemore
9d21b39880 C-SKY port: Testsuite
2018-08-17  Sandra Loosemore  <sandra@codesourcery.com>
	    Chung-Lin Tang  <cltang@codesourcery.com>
	    Xianmiao Qu  <xianmiao_qu@c-sky.com>

	C-SKY port: Testsuite

	gcc/testsuite/
	* g++.dg/Wno-frame-address.C: Adjust for C-SKY.
	* g++.dg/torture/type-generic-1.C: Likewise.
	* gcc.c-torture/compile/20000804-1.c: Likewise.
	* gcc.c-torture/execute/20101011-1.c: Likewise.
	* gcc.c-torture/execute/ieee/mul-subnormal-single-1.x: Likewise.
	* gcc.dg/20020312-2.c: Likewise.
	* gcc.dg/Wno-frame-address.c: Likewise.
	* gcc.dg/c11-true_min-1.c: Likewise.
	* gcc.dg/sibcall-10.c: Likewise.
	* gcc.dg/sibcall-9.c: Likewise.
	* gcc.dg/stack-usage-1.c: Likewise.
	* gcc.dg/torture/float32-tg-3.c: Likewise.
	* gcc.dg/torture/float32x-tg-3.c: Likewise.
	* gcc.dg/torture/float64-tg-3.c: Likewise.
	* gcc.dg/torture/float64x-tg-3.c: Likewise.
	* gcc.dg/torture/type-generic-1.c: Likewise.
	* gcc.target/csky/*: New.
	* lib/target-supports.exp (check_profiling_available): Add
	csky-*-elf.
	(check_effective_target_hard_float): Handle C-SKY targets with
	single-precision hard float only.
	(check_effective_target_logical_op_short_circuit): Handle C-SKY.

Co-Authored-By: Chung-Lin Tang <cltang@codesourcery.com>
Co-Authored-By: Xianmiao Qu <xianmiao_qu@c-sky.com>

From-SVN: r263630
2018-08-17 15:06:52 -04:00
Sandra Loosemore
fbceb769e6 C-SKY port: Documentation
2018-08-17  Sandra Loosemore  <sandra@codesourcery.com>

	C-SKY port: Documentation

	gcc/
	* doc/extend.texi (C-SKY Function Attributes): New section.
	* doc/invoke.texi (Option Summary): Add C-SKY options.
	(C-SKY Options): New section.
	* doc/md.texi (Machine Constraints): Document C-SKY constraints.

From-SVN: r263629
2018-08-17 15:05:12 -04:00
Jojo
cc7232b999 C-SKY port: Backend implementation
2018-08-17  Jojo  <jijie_rong@c-sky.com>
	    Huibin Wang  <huibin_wang@c-sky.com>
	    Sandra Loosemore  <sandra@codesourcery.com>
	    Chung-Lin Tang  <cltang@codesourcery.com>

	C-SKY port: Backend implementation

	gcc/
	* config/csky/*: New.
	* common/config/csky/*: New.

Co-Authored-By: Chung-Lin Tang <cltang@codesourcery.com>
Co-Authored-By: Huibin Wang <huibin_wang@c-sky.com>
Co-Authored-By: Sandra Loosemore <sandra@codesourcery.com>

From-SVN: r263628
2018-08-17 15:03:27 -04:00