* a-coinho-shared.adb (Adjust): Create
copy of internal shared object and element when source container
is locked.
(Copy): Likewise.
(Query_Element): Likewise.
(Update_Element): Likewise.
(Constant_Reference): Likewise. Raise Constraint_Error on attempt
to get reference for empty holder.
(Reference): Likewise.
2014-07-16 Thomas Quinot <quinot@adacore.com>
* exp_ch4.adb (Find_Hook_Context): New subprogram, extracted
from Process_Transient_Oject.
* exp_ch4.ads: Ditto.
* exp_ch9.adb (Build_Class_Wide_Master): Insert the _master
declaration as an action on the topmost enclosing expression,
not on a possibly conditional subexpreession.
* a-coinho.adb, a-coinho-shared.adb, a-coinho-shared.ads: Minor
reformatting.
2014-07-16 Ed Schonberg <schonberg@adacore.com>
* a-cohase.ads: Type Iterator must be controlled, so that the
tampering bit is properly set through an iteration.
* a-cohase.adb: Add Finalize operation for type Iterator.
PR preprocessor/60723 - missing system-ness marks for macro tokens
When a system macro is expanded in a non-system file during
out-of-line preprocessing, it can happen that the preprocessor forgets
to emit line markers to express the system-ness status of tokens that
come after the expansion of the macro.
That can lead to situations where the entire non-system file can be
considered as being a system file and thus have its warnings be
discarded during the compilation of the resulting preprocessed file.
My understanding is that this is due to the preprocessor not
systematically detecting (and reporting) the change in system-ness of
tokens.
And this is what this patch does. Each time the system-ness of a
given token is different from the previous token that was emitted by
the preprocessor, it emits a line marker for the sole purpose of
marking the new system-ness of the subsequent tokens to come.
Bootstrapped and tested on x86_64-unknown-linux-gnu against trunk.
gcc/c-family/ChangeLog:
* c-ppoutput.c (struct print::prev_was_system_token): New data
member.
(init_pp_output): Initialize it.
(maybe_print_line_1, maybe_print_line, print_line_1, print_line)
(do_line_change): Return a flag saying if a line marker was
emitted or not.
(scan_translation_unit): Detect if the system-ness of the token we
are about to emit is different from the one of the previously
emitted token. If so, emit a line marker. Avoid emitting useless
adjacent line markers. Avoid emitting line markers for tokens
originating from the expansion of built-in macros.
(scan_translation_unit_directives_only): Adjust.
gcc/testsuite/ChangeLog:
* gcc.dg/cpp/syshdr{4,5}.{c,h}: New test files.
Support location tracking for built-in macro tokens
When a built-in macro is expanded, the location of the token in the
epansion list is the location of the expansion point of the built-in
macro.
This patch creates a virtual location for that token instead,
effectively tracking locations of tokens resulting from built-in macro
tokens.
libcpp/
* include/line-map.h (line_maps::builtin_location): New data
member.
(line_map_init): Add a new parameter to initialize the new
line_maps::builtin_location data member.
* line-map.c (linemap_init): Initialize the
line_maps::builtin_location data member.
* macro.c (builtin_macro): Create a macro map and track the token
resulting from the expansion of a built-in macro.
gcc/
* input.h (is_location_from_builtin_token): New function
declaration.
* input.c (is_location_from_builtin_token): New function
definition.
* toplev.c (general_init): Tell libcpp what the pre-defined
spelling location for built-in tokens is.
* gfortran.dg/ieee/rounding_1.f90: Rename from ieee_rounding_1.f90.
* gfortran.dg/ieee/ieee_1.f90: Rename from ieee_1.F90.
(dg-additional-options): Add -mieee-with-inexact for alpha*-*-*.
* asan.c (asan_finish_file): Use varpool_finalize_decl instead of
varpool_assemble_decl.
* varpool.c (varpool_assemble_decl): Assert that node->definition is
true.
Jonathan Wakely [Tue, 15 Jul 2014 12:00:18 +0000 (13:00 +0100)]
printers.py (SingleObjContainerPrinter): New base class for experimental::any and experimental::optional printers.
* python/libstdcxx/v6/printers.py (SingleObjContainerPrinter): New
base class for experimental::any and experimental::optional printers.
(StdExpAnyPrinter, StdExpOptionalPrinter, StdExpStringViewPrinter):
New printers for Fundamentals TS types.
* testsuite/libstdc++-prettyprinters/libfundts.cc: New.
Jonathan Wakely [Tue, 15 Jul 2014 12:00:12 +0000 (13:00 +0100)]
printers.py (TemplateTypePrinter): Add type printer for class templates.
* python/libstdcxx/v6/printers.py (TemplateTypePrinter): Add type
printer for class templates.
(register_type_printers): Use TemplateTypePrinter for containers
and other class templates with default template arguments.
* testsuite/libstdc++-prettyprinters/whatis.cc: Test new recognizers.
Jan Hubicka [Tue, 15 Jul 2014 10:17:32 +0000 (12:17 +0200)]
tree.c (tree_code_size): Add TRANSLATION_UNIT_DECL, NAMESPACE_DECL, IMPORTED_DECL and NAMELIST_DECL...
* tree.c (tree_code_size): Add TRANSLATION_UNIT_DECL,
NAMESPACE_DECL, IMPORTED_DECL and NAMELIST_DECL;
call langhook for unknown declaration.
(find_decls_types_r): Do not walk DECL_ARGUMENT_FLD.
* tree.h (DECL_ARGUMENTS): Update.
* print-tree.c (print_node): Update.
* tree-core.h (tree_decl_non_common): Remove arguments.
(tree_function_decl): Add arguments.
* class.c (build_clone): Do not clear assembler names of
templates.
* decl.c (cp_tree_node_structure): Add TEMPLATE_DECL.
* cp-objcp-common.c (cp_tree_size): Add TEMPLATE_DECL
as a special case return sizeof (struct tree_decl_non_common)
for other decls.
(cp_common_init_ts): Do not initialize NAMESPACE_DECL;
initialize TEMPLATE_DECL as MARK_TS_DECL_COMMON.
* cp/cp-tree.h (tree_template_decl): New structure.
(cp_tree_node_structure_enum): Add TS_CP_TEMPLATE_DECL.
(union cp_lang_tree_node): Add template_decl.
(DECL_TEMPLATE_PARMS, DECL_TEMPLATE_RESULT): Update.
* lto/lto.c (mentions_vars_p_decl_non_common): Skip
DECL_ARGUMENT_FLD.
mentions_vars_p_function): Do DECL_ARGUMENTS.
(lto_fixup_prevailing_decls): Update.
* objc-act.c (objc_common_tree_size): New function.
* objc-act.h (KEYWORD_KEY_NAME, KEYWORD_ARG_NAME): Add type
checking.
(INSTANCE_METHOD_OR_CLASS_METHOD_DECL_CHECK): New macro.
(METHOD_SEL_NAME, METHOD_SEL_ARGS, METHOD_ADD_ARGS,
METHOD_ADD_ARGS_ELLIPSIS_P, METHOD_DEFINITION, METHOD_ENCODING,
METHOD_TYPE_ATTRIBUTES, METHOD_PROPERTY_CONTEXT): Add type checking.
(METHOD_SEL_ARGS): Use decl_common.size instead of
decl_non_common.result.
(PROPERTY_NAME, PROPERTY_GETTER_NAME, PROPERTY_SETTER_NAME,
PROPERTY_READONLY, PROPERTY_NONATOMIC, PROPERTY_ASSIGN_SEMANTICS,
PROPERTY_IVAR_NAME, PROPERTY_DYNAMIC, PROPERTY_HAS_NO_GETTER,
PROPERTY_HAS_NO_SETTER, PROPERTY_OPTIONAL): Add type checking.
(objc_common_tree_size): Declare.
* objc/objc-lang.c (LANG_HOOKS_TREE_SIZE): New macro.
Tim Shen [Tue, 15 Jul 2014 04:28:51 +0000 (04:28 +0000)]
re PR libstdc++/61720 (std::regex_search matches incorrectly)
PR libstdc++/61720
* include/bits/regex_executor.tcc (_Executor<>::_M_main_dispatch):
Clear match queue for next use.
* testsuite/28_regex/algorithms/regex_search/61720.cc: New file.
Jason Merrill [Mon, 14 Jul 2014 05:25:37 +0000 (01:25 -0400)]
re PR c++/58511 ([c++11] ICE using static const member variable in constexpr)
PR c++/58511
* semantics.c (is_instantiation_of_constexpr): Return true for
defaulted functions, too.
(explain_invalid_constexpr_fn): Only use
explain_implicit_non_constexpr if !DECL_DECLARED_CONSTEXPR_P.
* method.c (explain_implicit_non_constexpr): Pass
DECL_INHERITED_CTOR_BASE to explain_implicit_non_constexpr.
Jan Hubicka [Sun, 13 Jul 2014 22:12:54 +0000 (00:12 +0200)]
cgraph.h (symtab_node): Add nonzero_address.
* cgraph.h (symtab_node): Add nonzero_address.
(decl_in_symtab_p): Break out from ...
(symtab_get_node): ... here.
* fold-const.c: Include cgraph.h
(tree_single_nonzero_warnv_p): Use symtab to determine
if symbol is non-zero.
* symtab.c (symtab_node::nonzero_address): New method.
* gcc.dg/pr36901.h: Simplify because non-zero symbol folding no
longer happens during parsing.
* gcc.dg/pr44024.c: Update template.
* g++.dg/tree-ssa/nonzero-2.C: New testcase.
* g++.dg/tree-ssa/nonzero-1.C: New testcase.
* gcc.dg/tree-ssa/nonzero-1.c: New testcase.
PR C++/60209 - Declaration of user-defined literal operator cause error
cp/
2014-07-13 Edward Smith-Rowland <3dw4rd@verizon.net>
PR C++/60209 - Declaration of user-defined literal operator cause error
* cp/parser.c (cp_parser_operator()): Fold treatment of strings
and user-defined string literals. Use the full string parser.
(cp_parser_string_literal()): Add flag to not look for literal operator.
testsuite/
2014-07-13 Edward Smith-Rowland <3dw4rd@verizon.net>
PR C++/60209 - Declaration of user-defined literal operator cause error
* g++.dg/cpp0x/pr60209-neg.C: New.
* g++.dg/cpp0x/pr60209.C: New.
* g++.dg/cpp1y/udlit-empty-string-neg.C: Adjust messages.
* include/ext/random: Add uniform_on_sphere_distribution definition.
* include/ext/random.tcc: Add out-of-band member function definitions
for uniform_on_sphere_distribution.
* testsuite/ext/random/uniform_on_sphere_distribution/
cons/default.cc: New file.
* testsuite/ext/random/uniform_on_sphere_distribution/
operators/equal.cc: New file.
* testsuite/ext/random/uniform_on_sphere_distribution/
operators/inequal.cc: New file.
* testsuite/ext/random/uniform_on_sphere_distribution/
operators/serialize.cc: New file.
Paul Thomas [Sat, 12 Jul 2014 19:09:11 +0000 (19:09 +0000)]
re PR fortran/61780 (Wrong code when shifting elements of a multidimensional array)
2014-07-12 Paul Thomas <pault@gcc.gnu.org>
PR fortran/61780
* dependency.c (gfc_dep_resolver): Index the 'reverse' array so
that elements are skipped. This then correctly aligns 'reverse'
with the scalarizer loops.
2014-07-12 Paul Thomas <pault@gcc.gnu.org>
PR fortran/61780
* gfortran.dg/dependency_44.f90 : New test
Jan Hubicka [Sat, 12 Jul 2014 15:34:45 +0000 (17:34 +0200)]
tree.c (type_in_anonymous_namespace_p): Ignore TREE_PUBLIC on builtin types.
* tree.c (type_in_anonymous_namespace_p): Ignore TREE_PUBLIC
on builtin types.
* ipa-devirt.c: Include stor-layout.h and intl.h
(odr_subtypes_equivalent_p): New function.
(warn_odr): New function.
(warn_type_mismatch): New function.
(odr_types_equivalent_p): New function.
(add_type_duplicate): Use it.
* common.opt (Wodr): New flag.
* doc/invoke.texi (Wodr): Document new warning.
Jan Hubicka [Fri, 11 Jul 2014 17:43:44 +0000 (19:43 +0200)]
vapool.c: Include tree-ssa-alias.h, gimple.h and lto-streamer.h
* vapool.c: Include tree-ssa-alias.h, gimple.h and lto-streamer.h
(varpool_get_constructor): New function.
(varpool_ctor_useable_for_folding_p): Break out from ...
(ctor_for_folding): ... here; use varpool_get_constructor.
(varpool_assemble_decl): Likewise.
* lto-streamer.h (struct output_block): Turn cgraph_node
to symbol filed.
(lto_input_variable_constructor): Declare.
* ipa-visibility.c (function_and_variable_visibility): Use
varpool_get_constructor.
* cgraph.h (varpool_get_constructor): Declare.
(varpool_ctor_useable_for_folding_p): New function.
* lto-streamer-out.c (get_symbol_initial_value): Take encoder
parameter; return error_mark_node for non-trivial constructors.
(lto_write_tree_1, DFS_write_tree): UPdate use of
get_symbol_initial_value.
(output_function): Update initialization of symbol.
(output_constructor): New function.
(copy_function): Rename to ..
(copy_function_or_variable): ... this one; handle vars too.
(lto_output): Output variable sections.
* lto-streamer-in.c (input_constructor): New function.
(lto_read_body): Rename from ...
(lto_read_body_or_constructor): ... this one; handle vars
too.
(lto_input_variable_constructor): New function.
* ipa-prop.c (ipa_prop_write_jump_functions,
ipa_prop_write_all_agg_replacement): Update.
* lto-cgraph.c (compute_ltrans_boundary): Use it.
(output_cgraph_opt_summary): Set symbol to NULL.
Jan Hubicka [Fri, 11 Jul 2014 17:36:35 +0000 (19:36 +0200)]
ipa-prop.c (ipa_binfo_from_known_type_jfunc): In LTO do not walk non-polymorphic types.
* ipa-prop.c (ipa_binfo_from_known_type_jfunc): In LTO do not walk
non-polymorphic types.
* ipa-cp.c (ipa_get_jf_ancestor_result): Likewise.
* ipa-devirt.c (types_same_for_odr): Do not explode when one
of types is not polymorphic.
avr-arch.h (avr_mcu_t): Add text section start attribute.
* config/avr/avr-arch.h (avr_mcu_t): Add text section start attribute.
* config/avr/avr-devices.c (AVR_MCU): Same.
(avr_mcu_types): add text start value to end of device list.
* config/avr/avr-mcus.def: Add text section start for all devices.
(ata5782): Add new avr5 device.
(ata5831): Same.
* config/avr/avr-tables.opt: Regenerate.
* config/avr/avr.h: Add declaration for text section start handler.
(EXTRA_SPEC_FUNCTIONS): Add text section start handler to SPEC function=
s.
(LINK_SPEC): Include text section start handler to linker spec.
* config/avr/driver-avr.c (avr_device_to_text_start): New function to
pass -Ttext option to linker if the text section start for the device i=
s
not zero.
* config/avr/t-multilib: Regenerate.
* doc/avr-mmcu.texi: Regenerate.
Roman Gareev [Fri, 11 Jul 2014 14:18:44 +0000 (14:18 +0000)]
graphite-isl-ast-to-gimple.c (gmp_cst_to_tree): New function.
gcc/
* graphite-isl-ast-to-gimple.c (gmp_cst_to_tree):
New function.
(graphite_verify): New function.
(ivs_params_clear): New function.
(gcc_expression_from_isl_ast_expr_id): New function.
(gcc_expression_from_isl_expr_int): New function.
(binary_op_to_tree): New function.
(ternary_op_to_tree): New function.
(unary_op_to_tree): New function.
(nary_op_to_tree): New function.
(gcc_expression_from_isl_expr_op): New function.
(gcc_expression_from_isl_expression): New function.
(graphite_create_new_loop): New function.
(translate_isl_ast_for_loop): New function.
(get_upper_bound): New function.
(graphite_create_new_loop_guard): New function.
(translate_isl_ast_node_for): New function.
(translate_isl_ast): New function.
(add_parameters_to_ivs_params): New function.
(scop_to_isl_ast): New parameter ip.
(graphite_regenerate_ast_isl): Add generation of GIMPLE code.
Samuel Bronson [Fri, 11 Jul 2014 13:43:07 +0000 (13:43 +0000)]
re PR libstdc++/58962 (Pretty printers use obsolete Python syntax)
2014-07-11 Samuel Bronson <naesten@gmail.com>
Matthias Klose <doko@ubuntu.com>
PR libstdc++/58962
* python/libstdcxx/v6/printers.py: Port to Python 2+3
(imap): New compat function.
(izip): Likewise.
(Iterator): New mixin to allow writing iterators in Python 3 style
regardless of which version we're running on.
[Python3] (long) New compat alias for "int".
* testsuite/lib/gdb-test.exp: Port to Python 2+3 (print syntax)
Richard Biener [Fri, 11 Jul 2014 13:42:55 +0000 (13:42 +0000)]
re PR middle-end/61473 (register sized memmove not inlined)
2014-07-11 Richard Biener <rguenther@suse.de>
PR middle-end/61473
* builtins.c (fold_builtin_memory_op): Inline memory moves
that can be implemented with a single load followed by a
single store.
(c_strlen): Only warn when only_value is not 2.
* gcc.dg/memmove-4.c: New testcase.
* gcc.dg/strlenopt-8.c: XFAIL.
* gfortran.dg/coarray_lib_realloc_1.f90: Adjust.
re PR target/56858 (alpha looks for NOTE_INSN_EH_REGION notes that cannot exist)
PR target/56858
* config/alpha/alpha.c: Include tree-pass.h, context.h
and pass_manager.h.
(pass_data_handle_trap_shadows): New pass.
(pass_handle_trap_shadows::gate): New pass gate function.
(make_pass_handle_trap_shadows): New function.
(rest_of_handle_trap_shadows): Ditto.
(alpha_align_insns_1): Rename from alpha_align_insns.
(pass_data_align_insns): New pass.
(pass_align_insns::gate): New pass gate function.
(make_pass_aling_insns): New function.
(rest_of_align_insns): Ditto.
(alpha_align_insns): Ditto.
(alpha_option_override): Declare handle_trap_shadows info
and align_insns_info. Register handle_trap_shadows and align_insns
passes here.
(alpha_reorg): Do not call alpha_trap_shadows and
alpha_align_insn from here.
Rong Xu [Fri, 11 Jul 2014 05:48:07 +0000 (05:48 +0000)]
Add gcov-tool: an offline gcda profile processing tool Support.
2014-07-10 Rong Xu <xur@google.com>
Add gcov-tool: an offline gcda profile processing tool
Support.
* gcc/gcov-io.c (gcov_position): Make avaialble to gcov-tool.
(gcov_is_error): Ditto.
(gcov_read_string): Ditto.
(gcov_read_sync): Ditto.
* gcc/gcov-io.h: Move counter defines to gcov-counter.def.
* gcc/gcov-dump.c (tag_counters): Use gcov-counter.def.
* gcc/coverage.c: Ditto.
* gcc/gcov-tool.c: Offline gcda profile processing tool.
(unlink_gcda_file): Remove one gcda file.
(unlink_profile_dir): Remove gcda files from the profile path.
(gcov_output_files): Output gcda files to an output dir.
(profile_merge): Merge two profiles in directory.
(print_merge_usage_message): Print merge usage.
(merge_usage): Print merge usage and exit.
(do_merge): Driver for profile merge sub-command.
(profile_rewrite): Rewrite profile.
(print_rewrite_usage_message): Print rewrite usage.
(rewrite_usage): Print rewrite usage and exit.
(do_rewrite): Driver for profile rewrite sub-command.
(print_usage): Print gcov-info usage and exit.
(print_version): Print gcov-info version.
(process_args): Process arguments.
(main): Main routine for gcov-tool.
* gcc/Makefile.in: Build and install gcov-tool.
* gcc/gcov-counter.def: New file split from gcov-io.h.
* libgcc/libgcov-driver.c (gcov_max_filename): Make available
to gcov-tool.
* libgcc/libgcov-merge.c (__gcov_merge_add): Replace
gcov_read_counter() with a Macro.
(__gcov_merge_ior): Ditto.
(__gcov_merge_time_profile): Ditto.
(__gcov_merge_single): Ditto.
(__gcov_merge_delta): Ditto.
* libgcc/libgcov-util.c (void gcov_set_verbose): Set the verbose flag
in the utility functions.
(set_fn_ctrs): Utility function for reading gcda files to in-memory
gcov_list object link lists.
(tag_function): Ditto.
(tag_blocks): Ditto.
(tag_arcs): Ditto.
(tag_lines): Ditto.
(tag_counters): Ditto.
(tag_summary): Ditto.
(read_gcda_finalize): Ditto.
(read_gcda_file): Ditto.
(ftw_read_file): Ditto.
(read_profile_dir_init): Ditto.
(gcov_read_profile_dir): Ditto.
(gcov_read_counter_mem): Ditto.
(gcov_get_merge_weight): Ditto.
(merge_wrapper): A wrapper function that calls merging handler.
(gcov_merge): Merge two gcov_info objects with weights.
(find_match_gcov_info): Find the matched gcov_info in the list.
(gcov_profile_merge): Merge two gcov_info object lists.
(__gcov_add_counter_op): Process edge profile counter values.
(__gcov_ior_counter_op): Process IOR profile counter values.
(__gcov_delta_counter_op): Process delta profile counter values.
(__gcov_single_counter_op): Process single profile counter values.
(fp_scale): Callback function for float-point scaling.
(int_scale): Callback function for integer fraction scaling.
(gcov_profile_scale): Scaling profile counters.
(gcov_profile_normalize): Normalize profile counters.
* libgcc/libgcov.h: Add headers and functions for gcov-tool use.
(gcov_get_counter): New.
(gcov_get_counter_target): Ditto.
(struct gcov_info): Make the functions field mutable in gcov-tool
compilation.
* gcc/doc/gcc.texi: Include gcov-tool.texi.
* gcc/doc/gcov-tool.texi: Document for gcov-tool.
re PR preprocessor/61389 (libcpp diagnostics shouldn't talk about ISO C99 for C++ input files)
2014-07-10 Edward Smith-Rowland <3dw4rd@verizon.net>
Jonathan Wakely <jwakely@redhat.com>
PR CPP/61389
* macro.c (_cpp_arguments_ok, parse_params, create_iso_definition):
Warning messages mention C++11 in c++ mode and C99 in c mode.
* lex.c (lex_identifier_intern, lex_identifier): Ditto
Co-Authored-By: Jonathan Wakely <jwakely@redhat.com>
From-SVN: r212441