1. 21 Jul, 2016 20 commits
    • [Patch 2/2 ifcvt costs] Introduce a new cost model for ifcvt. · ebe8f322
      gcc/
      
      	* ifcvt.c (noce_if_info): New fields: speed_p, original_cost,
      	max_seq_cost.  Removed fields: then_cost, else_cost, branch_cost.
      	(noce_conversion_profitable_p): New.
      	(noce_try_store_flag_constants): Use it.
      	(noce_try_addcc): Likewise.
      	(noce_try_store_flag_mask): Likewise.
      	(noce_try_cmove): Likewise.
      	(noce_try_cmove_arith): Likewise.
      	(bb_valid_for_noce_process_p): Add to the cost parameter rather than
      	overwriting it.
      	(noce_convert_multiple_sets): Move cost model to here, from...
      	(bb_ok_for_noce_convert_multiple_sets) ...here.
      	(noce_process_if_block): Update calls for above changes.
      	(noce_find_if_block): Record new noce_if_info parameters.
      
      gcc/testsuite/
      
      	* gcc.dg/ifcvt-2.c: Use parameter to guide if-conversion heuristics.
      	* gcc.dg/ifcvt-3.c: Use parameter to guide if-conversion heuristics.
      	* gcc.dg/pr68435.c: Use parameter to guide if-conversion heuristics.
      	* gcc.dg/ifcvt-4.c: Use parameter to guide if-conversion heuristics.
      	* gcc.dg/ifcvt-5.c: Use parameter to guide if-conversion heuristics.
      
      From-SVN: r238594
      James Greenhalgh committed
    • [Patch 1/2 ifcvt costs] New target hook: max_noce_ifcvt_seq_cost · e914c11a
      gcc/
      
      	* target.def (max_noce_ifcvt_seq_cost): New.
      	* doc/tm.texi.in (TARGET_MAX_NOCE_IFCVT_SEQ_COST): Document it.
      	* doc/tm.texi: Regenerate.
      	* targhooks.h (default_max_noce_ifcvt_seq_cost): New.
      	* targhooks.c (default_max_noce_ifcvt_seq_cost): New.
      	* params.def (PARAM_MAX_RTL_IF_CONVERSION_PREDICTABLE_COST): New.
      	(PARAM_MAX_RTL_IF_CONVERSION_UNPREDICTABLE_COST): Likewise.
      	* doc/invoke.texi: Document new params.
      
      From-SVN: r238593
      James Greenhalgh committed
    • re PR tree-optimization/71947 (x ^ y not folded to 0 if x == y by DOM) · 959cef74
      2016-07-21  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/71947
      	* tree-vrp.c (extract_range_from_assert): Singleton symbolic
      	ranges have useful limit_vr information.
      
      	* gcc.dg/tree-ssa/vrp102.c: New testcase.
      
      From-SVN: r238591
      Richard Biener committed
    • Do not divide by zero in analyze_brprob.py · 88617fe4
      	* analyze_brprob.py: If there's no loop, do not calculate
      	average number of loop iterations.
      
      From-SVN: r238590
      Martin Liska committed
    • function-tests.c (build_trivial_generic_function): Set BLOCK_SUPERCONTEXT of DECL_INITIAL. · 01771d43
      2016-07-21  Richard Biener  <rguenther@suse.de>
      
      	* function-tests.c (build_trivial_generic_function): Set
      	BLOCK_SUPERCONTEXT of DECL_INITIAL.
      	* omp-low.c (create_omp_child_function): Likewise.
      	(grid_expand_target_grid_body): Likewise.
      	* cgraphunit.c (init_lowered_empty_function): Likewise.
      	(cgraph_node::expand_thunk): Likewise.
      	* tree-parloops.c (create_loop_fn): Likewise.
      	* ipa.c (cgraph_build_static_cdtor_1): Likewise.
      
      	cp/
      	* vtable-class-hierarchy.c (vtv_generate_init_routine): Set
      	DECL_IGNORED_P.
      
      	java/
      	* jcf-parse.c (java_emit_static_constructor): Set
      	BLOCK_SUPERCONTEXT of DECL_INITIAL.
      
      From-SVN: r238589
      Richard Biener committed
    • tree-ssa-strlen.c (strlen_dom_walker::before_dom_children): Fix typo in comment. · c7880c8c
      2016-07-21  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      	* tree-ssa-strlen.c (strlen_dom_walker::before_dom_children): Fix typo
      	in comment.
      
      From-SVN: r238588
      Prathamesh Kulkarni committed
    • Some patterns for moving one bit around by BST + BLD. · fa626987
      	* config/avr/avr.md (any_extract, any_shiftrt): New code iterators.
      	(*insv.extract, *insv.shiftrt, *insv.not-bit.0, *insv.not-bit.7)
      	(*insv.xor-extract, *insv.xor1-bit.0): New insns.
      	(adjust_len) [insv_notbit, insv_notbit_0, insv_notbit_7]: New
      	values for insn attribute.
      	* config/avr/avr.c (avr_out_insert_notbit): New function.
      	(avr_adjust_insn_length): Handle ADJUST_LEN_INSV_NOTBIT,
      	ADJUST_LEN_INSV_NOTBIT_0/_7.
      	* config/avr/avr-protos.h (avr_out_insert_notbit): New proto.
      
      From-SVN: r238587
      Georg-Johann Lay committed
    • tree-chrec.c (convert_affine_scev): New parameter. · b24d9420
      	* tree-chrec.c (convert_affine_scev): New parameter.  Pass new arg.
      	(chrec_convert_1, chrec_convert): Ditto.
      	* tree-chrec.h (chrec_convert, convert_affine_scev): New parameter.
      	* tree-scalar-evolution.c (interpret_rhs_expr): Pass new arg.
      	* tree-vrp.c (adjust_range_with_scev): Ditto.
      	* tree-ssa-loop-niter.c (idx_infer_loop_bounds): Ditto.
      	(scev_var_range_cant_overflow): New function.
      	(scev_probably_wraps_p): New parameter.  Call above function.
      	* tree-ssa-loop-niter.h (scev_probably_wraps_p): New parameter.
      
      	gcc/testsuite
      	* gcc.dg/tree-ssa/scev-15.c: New.
      
      From-SVN: r238586
      Bin Cheng committed
    • tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Clean up by removing… · 106d07f8
      tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Clean up by removing computation of may_be_zero.
      
      	* tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Clean up
      	by removing computation of may_be_zero.
      
      From-SVN: r238585
      Bin Cheng committed
    • [ARM] Fix PR target/59833 · a1b01d34
      For Aurelien Jarno <aurelien@aurel32.net>
      
      On ARM soft-float, the float to double conversion doesn't convert a sNaN
      to qNaN as the IEEE Std 754 standard mandates:
      
      "Under default exception handling, any operation signaling an invalid
      operation exception and for which a floating-point result is to be
      delivered shall deliver a quiet NaN."
      
      Given the soft float ARM code ignores exceptions and always provides a
      result, a float to double conversion of a signaling NaN should return a
      quiet NaN. Fix this in extendsfdf2.
      
      gcc/ChangeLog:
      
      	PR target/59833
      	* config/arm/ieee754-df.S (extendsfdf2): Convert sNaN to qNaN.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/pr59833.c: New testcase.
      
      From-SVN: r238584
      Aurelien Jarno committed
    • vect-mask-store-move-1.c: XFAIL. · 23974819
      	gcc/testsuite
      	* gcc.dg/vect/vect-mask-store-move-1.c: XFAIL.
      
      From-SVN: r238583
      Bin Cheng committed
    • re PR libgomp/71941 (ICE with OpenMP tasks and queue) · ee78cbaa
      	PR c++/71941
      	* cp-gimplify.c (cp_genericize): For nested cp_genericize calls
      	save/restore bc_label array.
      
      	* g++.dg/gomp/pr71941.C: New test.
      
      From-SVN: r238579
      Jakub Jelinek committed
    • PR c++/70781 - ICE on ill-formed lambda. · 172f0e13
      	* parser.c (cp_parser_lambda_expression): Unset OK if there was an
      	error parsing the lambda-declarator.
      
      From-SVN: r238563
      Jason Merrill committed
    • PR c++/71896 - constexpr pointer-to-member comparison. · dd5dda56
      	* constexpr.c (cxx_eval_binary_expression): Handle comparison
      	between lowered and unlowered PTRMEM_CST.
      
      From-SVN: r238562
      Jason Merrill committed
    • PR c++/70942 - generic lambda with auto&& parameter. · 4683f47c
      	* g++.dg/cpp1y/lambda-generic-conv3.C: New.
      
      From-SVN: r238561
      Jason Merrill committed
    • PR c++/65168 - -Waddress in unevaluated context. · 451dcc66
      gcc/c-family/
      	* c-common.c (c_common_truthvalue_conversion): Check
      	c_inhibit_evaluation_warnings for warning about address of
      	reference.
      gcc/cp/
      	* typeck.c (cp_truthvalue_conversion): Compare pointers to nullptr.
      	Don't set c_inhibit_evaluation_warnings.
      
      From-SVN: r238560
      Jason Merrill committed
    • PR c++/71121 - -Waddress, constexpr, and PMFs. · e96fe88c
      	* cp-gimplify.c (cp_fully_fold): First call maybe_constant_value.
      
      From-SVN: r238559
      Jason Merrill committed
    • Improving concepts performance and diagnostics. · f078dc7d
      	PR c++/67565
      	PR c++/67579
      	PR c++/71843
      gcc/
      	* timevar.def (TV_CONSTRAINT_SAT, TV_CONSTRAINT_SUB): New time vars
      	for constraint satisfaction and subsumption.
      	* timevar.h (auto_timevar): New constructor that matches the push/pop
      	pattern of usage in pt.c.
      gcc/cp/
      	* cp-tree.def (CHECK_CONSTR): New.
      	* cp-tree.h (CHECK_CONSTR_CONCEPT): New.
      	(CHECK_CONSTR_ARGS): New.
      	* constraint.cc (make_predicate_constraint): Remove in favor of
      	normalize_expression.
      	(resolve_constraint_check): Actually return error_mark_node when
      	resolution fails.
      	(resolve_variable_concept_check): Perform coercion as if processing
      	a template. Also return errors on resolution failure.
      	(lift_*): Remove all of these functions. Don't unnecessarily inline
      	concepts.
      	(learn_*): Add facilities to memoize implications for subsumption
      	during normalization.
      	(expanding_concept): New.
      	(expand_concept): New. Return the inlined and normalized definition
      	of a concept when needed.
      	(transform_*, xform_*): Rename to normalize_* to better reflect the
      	responsibility of those functions.
      	(normalize_template_id_expression): Check for non-boolean operands
      	when possible. Generate check constraints instead of normal variable
      	references.
      	(normalize_call_expression): Report errors when resolution fails.
      	(check_for_logical_overloads): Rewrite this check to more accurately
      	report the error.
      	(normalize_atom): Check for overloaded calls and invalid types before
      	determining if the expression refers to a concept.
      	(build_constraints): Don't cache normalized constraints or decmposed
      	assumptions.
      	(finish_shorthand_constraint): Return a normalized expression instead
      	of a predicate constraint.
      	(finish_template_introduction): Same.
      	(placeholder_extract_concept_and_args): Rewrite this since we only
      	ever get check constraints here.
      	(equivalent_placeholder_constraints): Rewrite in terms of check
      	constraints, and handle error_mark_nodes correctly.
      	(tsubst_check_constraint, tsubst_expr_constr, tsubst_type_constr)
      	(tsubst_implicit_conversion_constr)
      	(tsubst_argument_deduction_constr, tsubst_exception_constr)
      	(tsubst_parameterized_constraint, tsubst_constraint): New.
      	(tsbust_conjunection): Replace with tsubst_logical_operator and
      	actually generate the right kind of constraint.
      	(tsubst_requirement_body): Reverse the order of substituted arguments
      	so that they appear in the order written (helps diagnostics).
      	(satisfy_check_constraint): New.
      	(satisfy_conjunction): Simplify.
      	(satisfy_disjunction): Same.
      	(satisfy_constraint_1): Handle check constraints.
      	(eval_constr): New (private) global state.
      	(evaluating_constraints_sentinel): New. Manages eval_constr.
      	(satisfy_constraint): Add timing variables.
      	(satisfy_associated_constraints): Add hooks for memoization.
      	(evaluate_function_concept): Build a check constraint instead of
      	normalizing its definition.
      	(evaluate_variable_concept): Same.
      	(evaluate_constraint_expression): Normalize, but in the current
      	declaration processing context.
      	(evaluating_constraints_p): New.
      	(elide_constraint_failure_p): Actually emit constraint_thresh errors.
      	(diagnose_*): Remove artificial indentation. Add a new parameter to
      	each that tracks the current (complete) constraint prior to any
      	substitutions.
      	(diagnose_expression): Removed.
      	(diagnose_call_expression): Same.
      	(diagnose_template_id): Same.
      	(diagnose_template_id): New.
      	(diagnose_logical_constraint): New.
      	(diagnose_expression_constraint): Show the original expression.
      	(diagnose_type_constraint): Show the original type.
      	(diagnose_implicit_conversion_constraint): Be specific about
      	failures, don't re-diagnose a known-to-be-failed substitutions,
      	and manage elisions properly.
      	(diagnose_argument_deduction_constraint): Same.
      	(diagnose_exception_constraint): Same.
      	(diagnose_parameterized_constraint): Same.
      	(constraint_p): Allow EXPR_PACK_EXPANSION.
      	* logic.cc (next_by_distance): Removed. No longer used.
      	(any_p): Renamed from any_of.
      	(term_entry, term_hasher): New.
      	(term_list): Rewrite to include a hash table for quick lookup.
      	Also, make less stateful.
      	(proof_state): Extend to allow goals to be discharged once
      	satisfied.
      	(non_atomic_constraint_p): New.
      	(any_non_atomic_constraints_p): New.
      	(...rest...): Previous implementation completely replaced with an
      	iterative algorithm that opportunistically prunes the search space
      	before committing to using more memory.
      	* parser.c: (cp_parser_type_parameter): Normalize constraints.
      	(cp_parser_explicit_template_declaration): Same.
      	* pt.c: (finish_template_variable): Be less redundant with this error
      	message.
      	(template_args_equal): No longer static.
      	(tsubst_decl): Don't try to find specializations of variables that
      	have already been instantiated.
      	(build_non_dependent_expr): Avoid infinite recursion during concept
      	expansion.
      	(make_constrained_auto): Normalize constraints.
      	(do_auto_deduction): When doing auto deduction from a
      	partial-concept-id, be sure to include the explicit args checking
      	the constraints.
      	(constraint_sat_*): New. Memoize satisfied constraints.
      	(concept_spec_*): New. Memoize expressions associated with a concept
      	specialization.
      	(constraint_memos, concept_memos): New.
      	(lookup_constraint_satisfaction, memoize_constraint_satisfaction): New.
      	(lookup_concept_satisfaction, memoize_concept_satisfaction): New.
      	(get_concept_expansion, save_concept_expansion): New.
      	(hash_subsumption_args): New.
      	(comp_subsumption_args): New.
      	(subsumption_*): New. Memoize parts of the subsumption relation.
      	(lookup_subsumption_result, save_subsumption_result): New.
      	(init_constraint_processing): Initialize memo tables.
      	(get_constraints): Shortcut if !flag_concepts.
      	* decl.c (grokfndecl): Normalize constraints.
      	* error.c (dump_simple_decl): Print "concept" when appropriate.
      	(dump_function_decl): Same.
      	(dump_template_decl): Don't write requirements when we're not
      	printing the header.
      	(dump_expr): Handle fold expressions.
      	* cxx-pretty-print.c (cxx_pretty_printer::expression): Handle
      	fold expressions.
      	(get_fold_operator): New.
      	(pp_cxx_unary_left_fold_expression): New.
      	(pp_cxx_unary_right_fold_expression): New.
      	(pp_cxx_binary_fold_expression): New.
      	(pp_cxx_check_constraint): New.
      	(pp_cxx_*_constraint): Rewrite the grammar of internal constraints
      	to make them easier to read when debugging.
      	* search.c (accessible_p): Don't shortcut when evaluating constraints.
      	* tree.c (cp_tree_equal): Handle CHECK_CONSTR.
      
      Co-Authored-By: Jason Merrill <jason@redhat.com>
      
      From-SVN: r238558
      Andrew Sutton committed
    • Daily bump. · e17def9a
      From-SVN: r238557
      GCC Administrator committed
  2. 20 Jul, 2016 20 commits
    • hwint.h (HOST_WIDE_INT_0): New define. · 07e96250
      	* hwint.h (HOST_WIDE_INT_0): New define.
      	(HOST_WIDE_INT_0U): Ditto.
      	* double-int.c: Use HOST_WIDE_INT_0 instead of (HOST_WIDE_INT) 0.
      	* dse.c: Use HOST_WIDE_INT_0U instead of (unsigned HOST_WIDE_INT) 0.
      	* simplify-rtx.c: Ditto.
      	* tree-object-size.c: Ditto.
      
      From-SVN: r238545
      Uros Bizjak committed
    • C++ FE: handle misspelled identifiers and typenames · 52ed68f7
      gcc/cp/ChangeLog:
      	PR c/70339
      	PR c/71858
      	* name-lookup.c: Include gcc-rich-location.h, spellcheck-tree.h,
      	and parser.h.
      	(suggest_alternatives_for): If no candidates are found, try
      	lookup_name_fuzzy and report if if finds a suggestion.
      	(consider_binding_level): New function.
      	(lookup_name_fuzzy) New function.
      	* parser.c: Include gcc-rich-location.h.
      	(cp_lexer_next_token_is_decl_specifier_keyword): Move most of
      	logic into...
      	(cp_keyword_starts_decl_specifier_p): ...this new function.
      	(cp_parser_diagnose_invalid_type_name): When issuing
      	"does not name a type" errors, attempt to make a suggestion using
      	lookup_name_fuzzy.
      	* parser.h (cp_keyword_starts_decl_specifier_p): New prototype.
      	* search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Reject
      	types that are not CLASS_TYPE_P, rather than rejecting individual
      	tree codes.
      
      gcc/testsuite/ChangeLog:
      	PR c/70339
      	PR c/71858
      	* g++.dg/spellcheck-identifiers.C: New test case, based on
      	gcc.dg/spellcheck-identifiers.c.
      	* g++.dg/spellcheck-identifiers-2.C: New test case, based on
      	gcc.dg/spellcheck-identifiers-2.c.
      	* g++.dg/spellcheck-typenames.C: New test case, based on
      	gcc.dg/spellcheck-typenames.c
      
      From-SVN: r238538
      David Malcolm committed
    • S/390: Remove mode size check in encode_section_info. · 1397e163
      With the last change the not-aligned symbol ref markers are always set
      for modes with size zero.  This is wrong since for larl the size of
      the access does not matter.  This patch removes that check entirely
      from s390_encode_section_info.  Modes with a size of 0 get rejected in
      s390_check_symref_alignment which is used for the load/store relative
      instructions to check for natural alignment.
      
      Bootstrapped and regression tested on s390 and s390x with
      --with-arch=z900 and --with-arch=z13.
      
      gcc/ChangeLog:
      
      2016-07-20  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/s390.c (s390_encode_section_info): Remove mode size
      	check.
      
      From-SVN: r238536
      Andreas Krebbel committed
    • Document LWG DR 2684 status and regenerate libstdc++ manual · 09a855ae
      	* doc/xml/manual/intro.xml: Document DR 2684 status.
      	* doc/html/*: Regenerate.
      
      From-SVN: r238535
      Jonathan Wakely committed
    • LWG 2441 Provide exact-width atomic typedefs · e87b7d52
      	* include/std/atomic (atomic_int8_t, atomic_uint8_t, atomic_int16_t)
      	(atomic_uint16_t, atomic_int32_t, atomic_uint32_t, atomic_int64_t)
      	(atomic_uint64_t): Define (LWG 2441).
      	* testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc: Remove empty
      	lines.
      	* testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Test for
      	the new types.
      	* doc/xml/manual/intro.xml: Document DR 2441 status.
      
      From-SVN: r238534
      Jonathan Wakely committed
    • LWG 2328 Rvalue stream extraction should use perfect forwarding · 07c772ed
      	* include/std/istream (operator>>(basic_istream&&, _Tp&)): Adjust
      	to use perfect forwarding (LWG 2328).
      	* testsuite/27_io/rvalue_streams.cc: Test perfect forwarding.
      	* doc/xml/manual/intro.xml: Document DR 2328 status.
      
      From-SVN: r238533
      Jonathan Wakely committed
    • Use static pointer to member when catching nullptr · 18407bfb
      libstdc++-v3:
      
      	* libsupc++/pbase_type_info.cc (__pbase_type_info::__do_catch): Use
      	static objects for catching nullptr as pointer to member types.
      
      gcc/testsuite:
      
      	* g++.dg/cpp0x/nullptr35.C: Change expected result for catching as
      	pointer to member function and also test catching by reference.
      
      From-SVN: r238532
      Jonathan Wakely committed
    • S/390: Fix pr67443.c. · 4c07fd98
      The attached patch rewrites the pr67443.c testcase in a different way
      so that the test still works with the changed allocation of globals
      pinned to registers.  The test ist hopefully more robust now.
      
      gcc/testsuite/ChangeLog:
      
      2016-07-20  Dominik Vogt  <vogt@linux.vnet.ibm.com>
      
      	* gcc.target/s390/pr67443.c: Fix test case.
      
      From-SVN: r238531
      Dominik Vogt committed
    • S/390: Xfail some tests in insv-[12].c. · fee21d65
      The attached patch XFAILs some of the "insv" testcases as
      discussed internally.  Tested on s390x biarch and s390.
      
      gcc/testsuite/ChangeLog:
      
      2016-07-20  Dominik Vogt  <vogt@linux.vnet.ibm.com>
      
      	* gcc.target/s390/insv-1.c: Xfail some tests.
      	* gcc.target/s390/insv-2.c: Likewise.
      
      From-SVN: r238530
      Dominik Vogt committed
    • cse.c: Use HOST_WIDE_INT_M1 instead of ~(HOST_WIDE_INT) 0. · dd4786fe
      	* cse.c: Use HOST_WIDE_INT_M1 instead of ~(HOST_WIDE_INT) 0.
      	* combine.c: Use HOST_WIDE_INT_M1U instead of
      	~(unsigned HOST_WIDE_INT) 0.
      	* double-int.h: Ditto.
      	* dse.c: Ditto.
      	* dwarf2asm.c:Ditto.
      	* expmed.c: Ditto.
      	* genmodes.c: Ditto.
      	* match.pd: Ditto.
      	* read-rtl.c: Ditto.
      	* tree-ssa-loop-ivopts.c: Ditto.
      	* tree-ssa-loop-prefetch.c: Ditto.
      	* tree-vect-generic.c: Ditto.
      	* tree-vect-patterns.c: Ditto.
      	* tree.c: Ditto.
      
      From-SVN: r238529
      Uros Bizjak committed
    • avr.c (avr_legitimize_address): Force constant addresses outside [0,0xc0] into a register. · dbe9dfdd
      gcc/
      	* gcc/config/avr.c (avr_legitimize_address) [AVR_TINY]: Force
      	constant addresses outside [0,0xc0] into a register.
      	(avr_out_movhi_r_mr_reg_no_disp_tiny): Pass insn.  And handle
      	cases where the base address register is unused after.
      	(avr_out_movhi_r_mr_reg_disp_tiny): Same.
      	(avr_out_movhi_mr_r_reg_disp_tiny): Same.
      	(avr_out_store_psi_reg_disp_tiny): Same.
      
      gcc/testsuite/
      	* gcc.target/avr/torture/get-mem.c: New test.
      	* gcc.target/avr/torture/set-mem.c: New test.
      
      From-SVN: r238528
      Georg-Johann Lay committed
    • Implement attribute progmem on reduced Tiny cores by adding flash offset 0x4000… · c25e1d82
      Implement attribute progmem on reduced Tiny cores by adding flash offset 0x4000 to respective symbols.
      
      gcc/
      	Implement attribute progmem on reduced Tiny cores by adding
      	flash offset 0x4000 to respective symbols.
      
      	PR target/71948
      	* doc/extend.texi (AVR Variable Attributes) [progmem]: Add
      	documentation how it works on reduced Tiny cores.
      	(AVR Named Address Spaces): No support for reduced Tiny.
      	* config/avr/avr.c (AVR_SYMBOL_FLAG_TINY_PM): New macro.
      	(avr_address_tiny_pm_p): New static function.
      	(avr_print_operand_address) [AVR_TINY]: Add AVR_TINY_PM_OFFSET
      	if the address is in progmem.
      	(avr_assemble_integer): Same.
      	(avr_encode_section_info) [AVR_TINY]: Set AVR_SYMBOL_FLAG_TINY_PM
      	for symbol_ref in progmem.
      	* config/avr/avr.h (AVR_TINY_PM_OFFSET): New macro.
      	* config/avr/avr-c.c (avr_cpu_cpp_builtins): Use it instead of
      	magic 0x4000 when built-in def'ing __AVR_TINY_PM_BASE_ADDRESS__.
      gcc/testsuite/
      	PR target/71948
      	* gcc.target/avr/torture/tiny-progmem.c: New test.
      
      From-SVN: r238525
      Georg-Johann Lay committed
    • Build libbackend.a as a thin archive if possible · 25e08379
      gcc/ChangeLog:
      
      	* configure.ac (thin_archive_support): New variable.  AC_SUBST it.
      	* configure: Regenerate.
      	* Makefile.in (THIN_ARCHIVE_SUPPORT): New variable.
      	(USE_THIN_ARCHIVES): New variable.
      	(libbackend.a): If USE_THIN_ARCHIVES then pass T to ar to build
      	this archive as a thin archive.
      
      From-SVN: r238524
      Patrick Palka committed
    • Enabling work for C++ handling of misspelled identifiers and typenames · 7c8f7eaa
      gcc/c/ChangeLog:
      	* c-decl.c (struct edit_distance_traits<cpp_hashnode *>): Move to
      	spellcheck-tree.h
      	(best_macro_match): Likewise, converting from a typedef to a
      	subclass.
      	(find_closest_macro_cpp_cb): Move to spellcheck-tree.c.
      	(lookup_name_fuzzy): Update for change of best_macro_match to a
      	subclass with a ctor that calls cpp_forall_identifiers.
      
      gcc/ChangeLog:
      	* diagnostic-show-locus.c (diagnostic_show_locus): If this is the
      	same location as last time, don't skip if we have fix-it hints.
      	Clarify the skipping logic by converting it from one "if" clause
      	to repeated "if" clauses.
      	* spellcheck-tree.c: Include "cpplib.h".
      	(find_closest_macro_cpp_cb): Move here from c/c-decl.c.
      	(best_macro_match::best_macro_match): New constructor.
      	* spellcheck-tree.h (struct edit_distance_traits<cpp_hashnode *>):
      	Move here from c/c-decl.c.
      	(class best_macro_match): Move here from c/c-decl.c, converting
      	from a typedef to a subclass, gaining a ctor.
      
      From-SVN: r238522
      David Malcolm committed
    • re PR c++/71909 (g++ accepts an unreachable function catch block that lacks a corresponding try) · 7419f441
      	PR c++/71909
      	* parser.c (cp_parser_save_member_function_body): Consume
      	__transaction_relaxed or __transaction_atomic with optional
      	attribute.  Only skip catch with block if try keyword is seen.
      
      	* g++.dg/parse/pr71909.C: New test.
      	* g++.dg/tm/pr71909.C: New test.
      
      From-SVN: r238521
      Jakub Jelinek committed
    • re PR middle-end/50060 (intrinsics not folded by the middle-end) · 109d2197
      	PR c++/50060
      	* constexpr.c (cxx_eval_builtin_function_call): Pass false as lval
      	when evaluating call arguments.  Use fold_builtin_call_array instead
      	of fold_build_call_array_loc, return t if it returns NULL.  Otherwise
      	check the result with potential_constant_expression and call
      	cxx_eval_constant_expression on it.
      
      	* g++.dg/cpp0x/constexpr-50060.C: New test.
      	* g++.dg/cpp1y/constexpr-50060.C: New test.
      
      From-SVN: r238520
      Jakub Jelinek committed
    • avr-protos.h (avr_addr_space_supported_p): New prototype. · 2d06ca74
      gcc/
      	* config/avr/avr-protos.h (avr_addr_space_supported_p): New prototype.
      	* config/avr/avr.c (TARGET_ADDR_SPACE_DIAGNOSE_USAGE): New hook
      	define...
      	(avr_addr_space_diagnose_usage): ...and implementation.
      	(avr_addr_space_supported_p): New function.
      	(avr_nonconst_pointer_addrspace, avr_pgm_check_var_decl): Only
      	report bad address space usage if that space is supported.
      	(avr_insert_attributes): Same.  No more complain about unsupported
      	address spaces.
      	* config/avr/avr-c.c (tm_p.h): Include it.
      	(avr_cpu_cpp_builtins):	Only define addr-space related built-in
      	macro if avr_addr_space_supported_p.
      
      From-SVN: r238519
      Georg-Johann Lay committed
    • nvptx: do not implicitly enable -ftoplevel-reorder · b25ea150
      * config/nvptx/nvptx.c (nvptx_option_override): Do not set
      flag_toplevel_reorder.
      
      From-SVN: r238518
      Alexander Monakov committed
    • C: convert return type of lookup_name_fuzzy from tree to const char * · de6a69ee
      gcc/c-family/ChangeLog:
      	* c-common.h (lookup_name_fuzzy): Convert return type from tree to
      	const char *.
      
      gcc/c/ChangeLog:
      	* c-decl.c (implicit_decl_warning): Update for conversion of
      	return type of lookup_name_fuzzy to const char *.
      	(undeclared_variable): Likewise.
      	(lookup_name_fuzzy): Convert return type from tree to
      	const char *.
      	* c-parser.c (c_parser_declaration_or_fndef): Update for
      	conversion of return type of lookup_name_fuzzy to const char *.
      	(c_parser_parameter_declaration): Likewise.
      
      gcc/ChangeLog:
      	* gcc-rich-location.c
      	(gcc_rich_location::add_fixit_misspelled_id): New overload, taking
      	a const char *.
      	* gcc-rich-location.h
      	(gcc_rich_location::add_fixit_misspelled_id): Likewise.
      
      From-SVN: r238517
      David Malcolm committed
    • target.def (addr_space): Add new diagnose_usage to hook vector. · ffc22840
      gcc/
      	* target.def (addr_space): Add new diagnose_usage to hook vector.
      	* targhooks.c (default_addr_space_diagnose_usage): Add default
      	implementation and...
      	* targhooks.h (default_addr_space_diagnose_usage): ... its prototype.
      	* c/c-parser.c (c_lex_one_token) [CPP_NAME]: If the token
      	is some address space, call targetm.addr_space.diagnose_usage.
      	* doc/tm.texi.in (Named Address Spaces): Add anchor for
      	TARGET_ADDR_SPACE_DIAGNOSE_USAGE documentation.
      	* doc/tm.texi: Regenerate.
      
      From-SVN: r238514
      Georg-Johann Lay committed