1. 05 Oct, 2019 6 commits
    • re PR fortran/91497 (-Wconversion warns when doing explicit type conversion) · 74e4fb13
      2019-10-05  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/91497
      	* gfortran.dg/pr91497.f90: Run on i?86-*-* and x86_64-*-* only.
      
      From-SVN: r276626
      Steven G. Kargl committed
    • re PR fortran/91926 (assumed rank optional) · 980f185c
      2019-10-05  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/91926
      	* trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Correct the
      	assignment of the attribute field to account correctly for an
      	assumed shape dummy. Assign separately to the gfc and cfi
      	descriptors since the atribute can be different. Add btanch to
      	correctly handle missing optional dummies.
      
      2019-10-05  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/91926
      	* gfortran.dg/ISO_Fortran_binding_13.f90 : New test.
      	* gfortran.dg/ISO_Fortran_binding_13.c : Additional source.
      	* gfortran.dg/ISO_Fortran_binding_14.f90 : New test.
      
      2019-10-05  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/91926
      	* runtime/ISO_Fortran_binding.c (cfi_desc_to_gfc_desc): Do not
      	modify the bounds and offset for CFI_other.
      
      From-SVN: r276624
      Paul Thomas committed
    • [Darwin] Amend section for constants with reloactions. · d56cbcc0
      Darwin's linker doesn't like text section relocations (they require special
      enabling).  At least, the Fortran FE seems to generate cases where the
      initialiser for a pointer constant can need a relocation.  We can handle
      this by special-casing SECCAT_RODATA when the relocation is present by
      placing the constant in the .const_data section.
      
      gcc/ChangeLog:
      
      2019-10-05  Iain Sandoe  <iain@sandoe.co.uk>
      
      	PR target/59888
      	* config/darwin.c (darwin_rodata_section): Add relocation flag,
      	choose const_data section for constants with relocations.
      	(machopic_select_section): Pass relocation flag to
      	darwin_rodata_section ().
      
      From-SVN: r276623
      Iain Sandoe committed
    • PR c++/91369 - Implement P0784R7: constexpr new · 8e007055
      	PR c++/91369 - Implement P0784R7: constexpr new
      c-family/
      	* c-cppbuiltin.c (c_cpp_builtins): Predefine
      	__cpp_constexpr_dynamic_alloc=201907 for -std=c++2a.
      cp/
      	* cp-tree.h (enum cp_tree_index): Add CPTI_HEAP_UNINIT_IDENTIFIER,
      	CPTI_HEAP_IDENTIFIER and CPTI_HEAP_DELETED_IDENTIFIER.
      	(heap_uninit_identifier, heap_identifier, heap_deleted_identifier):
      	Define.
      	(type_has_constexpr_destructor, build_new_constexpr_heap_type,
      	cxx_constant_dtor): Declare.
      	* class.c (type_maybe_constexpr_default_constructor): Make static.
      	(type_maybe_constexpr_destructor, type_has_constexpr_destructor): New
      	functions.
      	(finalize_literal_type_property): For c++2a, don't clear
      	CLASSTYPE_LITERAL_P for types without trivial destructors unless they
      	have non-constexpr destructors.
      	(explain_non_literal_class): For c++2a, complain about non-constexpr
      	destructors rather than about non-trivial destructors.
      	* constexpr.c: Include stor-layout.h.
      	(struct constexpr_global_ctx): New type.
      	(struct constexpr_ctx): Add global field, remove values and
      	constexpr_ops_count.
      	(cxx_replaceable_global_alloc_fn): New inline function.
      	(cxx_eval_call_expression): For c++2a allow calls to replaceable
      	global allocation functions, for new return address of a heap uninit
      	var, for delete record its deletion.  Change ctx->values->{get,put} to
      	ctx->global->values.{get,put}.
      	(non_const_var_error): Add auto_diagnostic_group sentinel.  Emit
      	special diagnostics for heap variables.
      	(cxx_eval_store_expression): Change ctx->values->{get,put} to
      	ctx->global->values.{get,put}.
      	(cxx_eval_loop_expr): Initialize jump_target if NULL.  Change
      	new_ctx.values->remove to ctx->global->values.remove.
      	(cxx_eval_constant_expression): Change *ctx->constexpr_ops_count
      	to ctx->global->constexpr_ops_count.  Change ctx->values->{get,put} to
      	ctx->global->values.{get,put}.
      	<case NOP_EXPR>: Formatting fix.  On cast of replaceable global
      	allocation function to some pointer type, adjust the type of
      	the heap variable and change name from heap_uninit_identifier
      	to heap_identifier.
      	(find_heap_var_refs): New function.
      	(cxx_eval_outermost_constant_expr): Add constexpr_dtor argument,
      	handle evaluation of constexpr dtors and add tracking of heap
      	variables.  Use tf_no_cleanup for get_target_expr_with_sfinae.
      	(cxx_constant_value): Adjust cxx_eval_outermost_constant_expr caller.
      	(cxx_constant_dtor): New function.
      	(maybe_constant_value, fold_non_dependent_expr_template,
      	maybe_constant_init_1): Adjust cxx_eval_outermost_constant_expr
      	callers.
      	(potential_constant_expression_1): Ignore clobbers.  Allow
      	COND_EXPR_IS_VEC_DELETE for c++2a.
      	* decl.c (initialize_predefined_identifiers): Add heap identifiers.
      	(decl_maybe_constant_destruction): New function.
      	(cp_finish_decl): Don't clear TREE_READONLY for constexpr variables
      	with non-trivial, but constexpr destructors.
      	(register_dtor_fn): For constexpr variables with constexpr non-trivial
      	destructors call cxx_maybe_build_cleanup instead of adding destructor
      	calls at runtime.
      	(expand_static_init): For constexpr variables with constexpr
      	non-trivial destructors call cxx_maybe_build_cleanup.
      	(grokdeclarator): Allow constexpr destructors for c++2a.  Formatting
      	fix.
      	(cxx_maybe_build_cleanup): For constexpr variables with constexpr
      	non-trivial destructors call cxx_constant_dtor instead of adding
      	destructor calls at runtime.
      	* init.c: Include stor-layout.h.
      	(build_new_constexpr_heap_type, maybe_wrap_new_for_constexpr): New
      	functions.
      	(build_new_1): For c++2a and new[], add cast around the alloc call
      	to help constexpr evaluation figure out the type of the heap storage.
      	(build_vec_delete_1): Set DECL_INITIAL of tbase and emit a DECL_EXPR
      	for it instead of initializing an uninitialized variable.
      	* method.c: Include intl.h.
      	(SFK_CTOR_P, SFK_DTOR_P, SFK_ASSIGN_P, SFK_COPY_P, SFK_MOVE_P): Move
      	definitions earlier.
      	(process_subob_fn): Add sfk argument, adjust non-constexpr call
      	diagnostics based on it.
      	(walk_field_subobs): Formatting fixes.  Adjust process_subob_fn caller.
      	(synthesized_method_base_walk): Likewise.
      	(synthesized_method_walk): Set *constexpr_p to true for dtors in c++2a.
      	Fix up DR number in comment.
      	(implicitly_declare_fn): Formatting fix.
      	* typeck2.c (store_init_value): Don't call cp_fully_fold_init on
      	initializers of automatic non-constexpr variables in constexpr
      	functions.
      testsuite/
      	* g++.dg/cpp0x/constexpr-delete2.C: Adjust expected diagnostics for
      	c++2a.
      	* g++.dg/cpp0x/locations1.C: Only expect constexpr ~S() diagnostics
      	in c++17_down, adjust expected wording.
      	* g++.dg/cpp1y/constexpr-new.C: Only expect diagnostics in c++17_down.
      	* g++.dg/cpp2a/constexpr-dtor1.C: New test.
      	* g++.dg/cpp2a/constexpr-dtor2.C: New test.
      	* g++.dg/cpp2a/constexpr-dtor3.C: New test.
      	* g++.dg/cpp2a/constexpr-new1.C: New test.
      	* g++.dg/cpp2a/constexpr-new2.C: New test.
      	* g++.dg/cpp2a/constexpr-new3.C: New test.
      	* g++.dg/cpp2a/constexpr-new4.C: New test.
      	* g++.dg/cpp2a/feat-cxx2a.C: Add __cpp_constinit and
      	__cpp_constexpr_dynamic_alloc tests.  Tweak __cpp_* tests for c++2a
      	features to use style like older features, including #ifdef test.
      	* g++.dg/ext/is_literal_type3.C: New test.
      
      From-SVN: r276622
      Jakub Jelinek committed
    • re PR tree-optimization/91734 (gcc skip an if statement with "-O1 -ffast-math") · 0043b528
      	PR tree-optimization/91734
      	* generic-match-head.c: Include fold-const-call.h.
      	* match.pd (sqrt(x) cmp c): Check the boundary value and
      	in case inexact computation of c*c affects comparison of the boundary,
      	turn LT_EXPR into LE_EXPR, GE_EXPR into GT_EXPR, LE_EXPR into LT_EXPR
      	or GT_EXPR into GE_EXPR.  Punt for sqrt comparisons against NaN and
      	for -frounding-math.  For c2, try the next smaller or larger floating
      	point constant depending on comparison code and if it has the same
      	sqrt as c2, use it instead of c2.
      
      	* gcc.dg/pr91734.c: New test.
      
      From-SVN: r276621
      Jakub Jelinek committed
    • Daily bump. · 30648d02
      From-SVN: r276618
      GCC Administrator committed
  2. 04 Oct, 2019 34 commits