1. 11 Aug, 2019 4 commits
    • PR fortran/91413 Generate warning when making array static · 54320207
      When moving a local variable from the stack to static storage, the
      procedure is no longer safe to be called recursively or concurrently
      from multiple threads.  Thus generate a warning when this is done.
      Also double the default limit for switching from stack to static.
      
      Regtested on x86_64-pc-linux-gnu.
      
      gcc/fortran/ChangeLog:
      
      2019-08-11  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	PR fortran/91413
      	* invoke.texi (-fmax-stack-var-size): Document increased default.
      	* options.c (gfc_post_options): Increase default stack var size to
      	65536 bytes.
      	* trans-decl.c (gfc_finish_var_decl): Generate warning when local
      	array moved to static storage.
      
      From-SVN: r274264
      Janne Blomqvist committed
    • d: Fix ICE: gimplification failed (gimplify.c at 13436) · 4c9dbb96
      The expression that caused the ICE
      
      	++(a += 1.0);
      
      The D front-end rewrites and applies implicit type conversions so the
      expression gets simplified as
      
      	(int)((double) a += 1.0) += 1
      
      The codegen pass would subsequently generate the following invalid code
      
      	(int)(double) a = (int)((double) a + 1.0) + 1
      
      The LHS expression `(int)(double) a', represented as a FIX_TRUNC_EXPR
      being what trips as it is not a valid lvalue for assignment.
      
      While LHS casts are stripped away, convert_expr adds a double cast
      because it converts the expression to its original type before
      converting it to its target type.  There is no valid reason why this is
      done, so it has been removed.
      
      gcc/d/ChangeLog:
      
      	PR d/90601
      	* d-convert.cc (convert_expr): Don't convert an expression to its
      	original front-end type before converting to its target type.
      
      gcc/testsuite/ChangeLog:
      
      	PR d/90601
      	* gdc.dg/pr90601.d: New test.
      
      From-SVN: r274263
      Iain Buclaw committed
    • Correct a single misfire in previous ChangeLog cleanup. · 05ba17fd
      From-SVN: r274262
      Hans-Peter Nilsson committed
    • Daily bump. · b2f8f7bc
      From-SVN: r274261
      GCC Administrator committed
  2. 10 Aug, 2019 7 commits
    • decl.c (match_old_style_init): Use a clearer error message. · 878f88b7
      2019-08-10  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	* decl.c (match_old_style_init): Use a clearer error message.
      	* expr.c (gfc_check_assign): Update BOZ checking to provide a stricter
      	adherence to the Fortran standard.  Use gfc_invalid_boz () to
      	relax errors into warnings.
      	* gfortran.h (gfc_isym_id): Add new ids GFC_ISYM_DFLOAT,
      	GFC_ISYM_FLOAT, GFC_ISYM_REALPART, and GFC_ISYM_SNGL
      	* intrinsic.c (add_functions): Use new ids to split REAL generic into
      	REAL, FLOAT, DFLOAT, SNGL, and REALPART generics.
      	(gfc_intrinsic_func_interface): Allow new intrinsics in an
      	initialization expression
      	* resolve.c (resolve_operator): Deal with BOZ as operands.
              Use gfc_invalid_boz to allow for errors or warnings via the
      	-fallow-invalid-boz option.  A BOZ cannot be an operand to an
      	unary operator.  Both operands of a binary operator cannot be BOZ.
              For binary operators, convert a BOZ operand into the type and
      	kind of the other operand for REAL or INTEGER operand.
      	* trans-intrinsic.c: Use new ids to cause conversions to happen.
      
      2019-08-10  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	* gfortran.dg/boz_8.f90: Adjust error messages.
      	* gfortran.dg/nan_4.f90: Ditto.
      	* gfortran.dg/boz_1.f90: Add -fallow-invalid-boz to dg-options,
      	and test for warnings.
      	* gfortran.dg/boz_3.f90: Ditto.
      	* gfortran.dg/boz_4.f90: Ditto.
      	* gfortran.dg/dec_structure_6.f90: Ditto.
      	* gfortran.dg/ibits.f90: Ditto.
      
      From-SVN: r274257
      Steven G. Kargl committed
    • d: Fix internal compiler error: in add_expr, at tree.c:7794 · 884efbd5
      gcc/d/ChangeLog:
      
      	PR d/91238
      	* d-codegen.cc (build_address): If taking the address of a CALL_EXPR,
      	wrap it in a TARGET_EXPR.
      
      gcc/testsuite/ChangeLog:
      
      	PR d/91238
      	* gdc.dg/pr91238.d: New test.
      
      From-SVN: r274253
      Iain Buclaw committed
    • tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_DEVICE_TYPE. · 77eb117f
      	* tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_DEVICE_TYPE.
      	(enum omp_clause_device_type_kind): New enum.
      	(struct tree_omp_clause): Add subcode.device_type_kind.
      	* tree.h (OMP_CLAUSE_DEVICE_TYPE_KIND): Define.
      	* tree.c (omp_clause_num_ops, omp_clause_code_name): Add entries
      	for device_type clause.
      	(walk_tree_1): Handle OMP_CLAUSE_DEVICE_TYPE.
      	* tree-pretty-print.c (dump_omp_clause): Likewise.
      c-family/
      	* c-pragma.h (enum pragma_omp_clause): Add
      	PRAGMA_OMP_CLAUSE_DEVICE_TYPE.
      c/
      	* c-parser.c (c_parser_omp_clause_name): Parse device_type.
      	(c_parser_omp_clause_device_type): New function.
      	(c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_DEVICE_TYPE.
      	(OMP_DECLARE_TARGET_CLAUSE_MASK): Add PRAGMA_OMP_CLAUSE_DEVICE_TYPE.
      	(c_parser_omp_declare_target): Handle device_type clauses.  Remove
      	diagnostics for declare target with clauses nested in clause-less
      	declare target declaration-definition-seq.
      	* c-typeck.c (c_finish_omp_clauses): Handle OMP_CLAUSE_DEVICE_TYPE.
      cp/
      	* parser.c (cp_parser_omp_clause_name): Parse device_type.
      	(cp_parser_omp_clause_device_type): New function.
      	(cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_DEVICE_TYPE.
      	(OMP_DECLARE_TARGET_CLAUSE_MASK): Add PRAGMA_OMP_CLAUSE_DEVICE_TYPE.
      	(cp_parser_omp_declare_target): Handle device_type clauses.  Remove
      	diagnostics for declare target with clauses nested in clause-less
      	declare target declaration-definition-seq.
      	* semantics.c (finish_omp_clauses): Handle OMP_CLAUSE_DEVICE_TYPE.
      testsuite/
      	* c-c++-common/gomp/declare-target-2.c: Don't expect error for
      	declare target with clauses in between declare target without clauses
      	and end declare target.
      	* c-c++-common/gomp/declare-target-4.c: New test.
      
      From-SVN: r274252
      Jakub Jelinek committed
    • re PR target/91408 (ICE in extract_insn, at recog.c:2310 since r273981) · 5b7ed762
      	PR target/91408
      	* config/i386/mmx.md (usadv8qi): Use register_operand instead of
      	vector_operand.
      
      	* gcc.target/i386/pr91408.c: New test.
      
      From-SVN: r274251
      Jakub Jelinek committed
    • Assorted ChangeLog cleanups. · ab20d992
      From-SVN: r274250
      Jakub Jelinek committed
    • Fix ODR violation in d/runtime.cc · 74039253
      gcc/d/ChangeLog:
      
      	PR d/90893
      	* runtime.cc (enum libcall_type): Rename to...
      	(enum d_libcall_type): ...this.
      	(get_libcall_type): Use d_libcall_type.
      	(build_libcall_decl): Likewise.
      
      From-SVN: r274249
      Iain Buclaw committed
    • Daily bump. · 8fa64062
      From-SVN: r274248
      GCC Administrator committed
  3. 09 Aug, 2019 18 commits
    • * zh_TW.po: Update. · c94fe79e
      From-SVN: r274243
      Joseph Myers committed
    • * uk.po: Update. · 34237338
      From-SVN: r274241
      Joseph Myers committed
    • reload1.c (finish_spills): Do not check ira_conflicts_p when handling spilled pseudos. · 394ae89b
      	* reload1.c (finish_spills): Do not check ira_conflicts_p when
      	handling spilled pseudos.
      
      From-SVN: r274240
      Vladimir Makarov committed
    • rs6000: vec-rotate-*.c fixes · ef4ddda8
      This fixes two minor problems with the new testcases.  The first is
      that almost all other tests, including all vec* tests, for powerpc use
      names with dashes, not underscores.  The more important one is the the
      vec-rotate-1.c and vec-rotate-3.c tests need the -maltivec flag.
      
      
      gcc/testsuite/
      	* gcc.target/powerpc/vec_rotate-1.c: Rename to ...
      	* gcc.target/powerpc/vec-rotate-1.c: ... this.  Add -maltivec option.
      	* gcc.target/powerpc/vec_rotate-2.c: Rename to ...
      	* gcc.target/powerpc/vec-rotate-2.c: ... this.
      	* gcc.target/powerpc/vec_rotate-3.c: Rename to ...
      	* gcc.target/powerpc/vec-rotate-3.c: ... this.  Add -maltivec option.
      	* gcc.target/powerpc/vec_rotate-4.c: Rename to ...
      	* gcc.target/powerpc/vec-rotate-4.c: ... this.
      
      From-SVN: r274239
      Segher Boessenkool committed
    • [aarch64] PR target/91386 Use copy_rtx to avoid modifying original insns in peep2 pattern · f6af9c21
      PR target/91386 is a situation where a peephole2 pattern substitution
      is discarded late because the selected instructions contain
      frame-related notes that we cannot redistribute (because the pattern
      has more than one insn in the output).  Unfortunately, the original
      insns were being modified during the generation, so after the undo we
      are left with corrupt RTL.
      
      We avoid this by ensuring that the modifications are always made on a
      copy, so that the original insns are never changed.
      
      	PR target/91386
      	* config/aarch64/aarch64.c (aarch64_gen_adjusted_ldpstp): Use copy_rtx
      	to preserve the contents of the original insns.
      
      From-SVN: r274238
      Richard Earnshaw committed
    • [arm] Recognize thumb2 16-bit variants of the add and compare instructions · d092f6fc
      The addsi3_compare_op[12] patterns currently only have constraints to
      pick the 32-bit variants of the instructions.  Although the assembler
      may sometimes opportunistically match a 16-bit t2 instruction, there's
      no real control over that within the compiler.  Consequently we might
      emit a 32-bit adds instruction with a 16-bit subs instruction would
      serve equally well.  We do, of course still have to be careful about
      the small number of boundary cases by controlling the order quite
      carefully.
      
      This patch adds the constraints and templates to match the t2 16-bit
      variants of these instructions.  Now, for example, we can generate
      
          subs r0, r0, #1 // 16-bit instruction
      
      instead of 
      
          adds r0, r0, #1 // 32-bit instruction.
      
      	*confit/arm/arm.md (addsi3_compare_op1): Add 16-bit thumb-2 variants.
      	(addsi3_compare_op2): Likewise.
      
      From-SVN: r274237
      Richard Earnshaw committed
    • [PATCH][GCC][AARCH64] Add effective-target check to b key execution tests · 9c4cb861
      gcc/testsuite
      2019-08-09  Sam Tebbs<sam.tebbs@arm.com>
      
      	* lib/target-supports.exp
      	(check_effective_target_arm_v8_4a_bkey_directive): New proc.
      	* g++.target/aarch64/return_address_sign_b_exception.C,
      	return_address_sign_ab_exception.C: Add dg-require-effective-target
      	checks.
      
      From-SVN: r274236
      Sam Tebbs committed
    • Strengthen alias_ptr_types_compatible_p in LTO mode. · 33e8e0ee
      2019-08-09  Martin Liska  <mliska@suse.cz>
      
      	* alias.c (alias_ptr_types_compatible_p): Strengten
      	type comparison in LTO mode.
      
      From-SVN: r274235
      Martin Liska committed
    • Reject tail calls that read from an escaped RESULT_DECL (PR90313) · 97bf048c
      In this PR we have two return paths from a function "map".  The common
      code sets <result> to the value returned by one path, while the other
      path does:
      
         <retval> = map (&<retval>, ...);
      
      We treated this call as tail recursion, losing the copy semantics
      on the value returned by the recursive call.
      
      We'd correctly reject the same thing for variables:
      
         local = map (&local, ...);
      
      The problem is that RESULT_DECLs didn't get the same treatment.
      
      2019-08-09  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR middle-end/90313
      	* tree-tailcall.c (find_tail_calls): Reject calls that might
      	read from an escaped RESULT_DECL.
      
      gcc/testsuite/
      	PR middle-end/90313
      	* g++.dg/torture/pr90313.cc: New test.
      
      From-SVN: r274234
      Richard Sandiford committed
    • skip Cholesky decomposition in is>>n_mv_dist · c787deb0
      normal_mv_distribution maintains the variance-covariance matrix param
      in Cholesky-decomposed form.  Existing param_type constructors, when
      taking a full or lower-triangle varcov matrix, perform Cholesky
      decomposition to convert it to the internal representation.  This
      internal representation is visible both in the varcov() result, and in
      the streamed-out representation of a normal_mv_distribution object.
      
      The problem is that when that representation is streamed back in, the
      read-back decomposed varcov matrix is used as a lower-triangle
      non-decomposed varcov matrix, and it undergoes Cholesky decomposition
      again.  So, each cycle of stream-out/stream-in changes the varcov
      matrix to its "square root", instead of restoring the original
      params.
      
      This patch includes Corentin's changes that introduce verification in
      testsuite/ext/random/normal_mv_distribution/operators/serialize.cc and
      other similar tests that the object read back in compares equal to the
      written-out object: the modified tests pass only if (u == v).
      
      This patch also fixes the error exposed by his change, introducing an
      alternate private constructor for param_type, used only by operator>>.
      
      
      for  libstdc++-v3/ChangeLog
      
      	* include/ext/random
      	(normal_mv_distribution::param_type::param_type): New private
      	ctor taking a decomposed varcov matrix, for use by...
      	(operator>>): ... this, befriended.
      	* include/ext/random.tcc (operator>>): Use it.
      	(normal_mv_distribution::param_type::_M_init_lower): Adjust
      	member function name in exception message.
      
      for  libstdc++-v3/ChangeLog
      from  Corentin Gay  <gay@adacore.com>
      
      	* testsuite/ext/random/beta_distribution/operators/serialize.cc,
      	testsuite/ext/random/hypergeometric_distribution/operators/serialize.cc,
      	testsuite/ext/random/normal_mv_distribution/operators/serialize.cc,
      	testsuite/ext/random/triangular_distribution/operators/serialize.cc,
      	testsuite/ext/random/von_mises_distribution/operators/serialize.cc:
      	Add call to `VERIFY`.
      
      From-SVN: r274233
      Alexandre Oliva committed
    • Add -flto=auto option value. · 279dc7a3
      2019-08-09  Martin Liska  <mliska@suse.cz>
      
      	* doc/invoke.texi: Document the option value.
      	* lto-wrapper.c (run_gcc): Set auto_parallel
      	only with -flto=auto.
      2019-08-09  Martin Liska  <mliska@suse.cz>
      
      	* g++.dg/lto/devirt-19_0.C: Add -flto=auto.
      
      From-SVN: r274232
      Martin Liska committed
    • Provide proper error message for -flto=abcd. · 40077d15
      2019-08-09  Martin Liska  <mliska@suse.cz>
      
      	* opts.c (common_handle_option): Error for an invalid argument
      	to -flto=.
      2019-08-09  Martin Liska  <mliska@suse.cz>
      
      	* gcc.dg/spellcheck-options-21.c: New test.
      
      From-SVN: r274231
      Martin Liska committed
    • Implement -fopt-info support for IPA ICF. · fe6c4dc4
      2019-08-09  Martin Liska  <mliska@suse.cz>
      
      	* ipa-icf.c (sem_function::merge): Define AUTO_DUMP_SCOPE and
      	use dump_printf to report optimization.
      	(sem_variable::merge): Likwise.
      	(sem_item_optimizer::merge_classes): Use dump_printf to report
      	ICF hits.
      2019-08-09  Martin Liska  <mliska@suse.cz>
      
      	* g++.dg/ipa/ipa-icf-2.C: Add -optimized to -fdump-ipa-icf.
      	* g++.dg/ipa/ipa-icf-3.C: Likewise.
      	* g++.dg/ipa/ipa-icf-4.C: Likewise.
      	* g++.dg/ipa/ipa-icf-6.C: Likewise.
      	* gcc.dg/ipa/ipa-icf-1.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-10.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-11.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-12.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-13.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-16.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-18.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-2.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-20.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-21.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-23.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-25.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-26.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-27.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-3.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-35.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-36.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-37.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-38.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-39.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-5.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-7.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-8.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-merge-1.c: Likewise.
      	* gcc.dg/ipa/pr64307.c: Likewise.
      	* gcc.dg/ipa/pr90555.c: Likewise.
      
      From-SVN: r274230
      Martin Liska committed
    • Port value profiling to -fopt-info infrastructure. · c220ecd2
      2019-08-09  Martin Liska  <mliska@suse.cz>
      
      	* value-prof.c (gimple_divmod_fixed_value_transform):
      	Use dump_printf_loc.
      	(gimple_mod_pow2_value_transform): Likewise.
      	(gimple_mod_subtract_transform): Likewise.
      	(init_node_map): Likewise.
      	(gimple_ic_transform): Likewise.
      	(gimple_stringops_transform): Likewise.
      2019-08-09  Martin Liska  <mliska@suse.cz>
      
      	* g++.dg/tree-prof/indir-call-prof.C: Add -optimize
      	to -fdump-ipa-profile.
      	* g++.dg/tree-prof/morefunc.C: Likewise.
      	* g++.dg/tree-prof/reorder.C: Likewise.
      	* gcc.dg/tree-prof/ic-misattribution-1.c: Likewise.
      	* gcc.dg/tree-prof/indir-call-prof.c: Likewise.
      	* gcc.dg/tree-prof/stringop-1.c: Likewise.
      	* gcc.dg/tree-prof/stringop-2.c: Likewise.
      	* gcc.dg/tree-prof/val-prof-1.c: Likewise.
      	* gcc.dg/tree-prof/val-prof-2.c: Likewise.
      	* gcc.dg/tree-prof/val-prof-3.c: Likewise.
      	* gcc.dg/tree-prof/val-prof-4.c: Likewise.
      	* gcc.dg/tree-prof/val-prof-5.c: Likewise.
      	* gcc.dg/tree-prof/val-prof-7.c: Likewise.
      
      From-SVN: r274229
      Martin Liska committed
    • c-parser.c (check_no_duplicate_clause): Simplify using omp_find_clause. · bb522e2e
      c/
      	* c-parser.c (check_no_duplicate_clause): Simplify using
      	omp_find_clause.
      	(c_parser_omp_clause_if): Fix up printing of target {enter,exit} data
      	directive name modifiers.
      	(c_parser_omp_clause_proc_bind): Check for duplicate proc_bind clause.
      cp/
      	* parser.c (check_no_duplicate_clause): Simplify using
      	omp_find_clause.
      	(cp_parser_omp_clause_if): Fix up printing of target {enter,exit} data
      	directive name modifiers.
      testsuite/
      	* c-c++-common/gomp/if-4.c: New test.
      	* c-c++-common/gomp/clause-dups-1.c: New test.
      
      From-SVN: r274227
      Jakub Jelinek committed
    • re PR c/91401 (schedule + dist_schedule clauses rejected on distribute parallel for) · 2c3b8bad
      	PR c/91401
      c/
      	* c-parser.c (c_parser_omp_clause_dist_schedule): Fix up typos in the
      	check_no_duplicate_clause call.  Comment it out, instead emit a
      	warning for duplicate dist_schedule clauses.
      cp/
      	* parser.c (cp_parser_omp_clause_dist_schedule): Comment out the
      	check_no_duplicate_clause call, instead emit a warning for duplicate
      	dist_schedule clauses.
      testsuite/
      	* c-c++-common/gomp/pr91401-1.c: New test.
      	* c-c++-common/gomp/pr91401-2.c: New test.
      
      From-SVN: r274226
      Jakub Jelinek committed
    • use rand instead of random · 5dd6b2da
      rand is in ISO C, whereas random is only in POSIX, so it makes sense
      to use the more portable function everywhere instead of falling back
      from one to the other on systems that miss the less portable one.
      
      
      for  gcc/testsuite/ChangeLog
      
      	* gcc.target/i386/sse2-mul-1.c: Use rand.  Drop fallback.
      	* gcc.target/i386/sse4_1-blendps-2.c: Likewise.
      	* gcc.target/i386/sse4_1-blendps.c: Likewise.
      	* gcc.target/i386/xop-vshift-1.c: Likewise.
      	* gcc.target/powerpc/direct-move.h: Likewise.
      
      From-SVN: r274225
      Alexandre Oliva committed
    • Daily bump. · 4e9d3fdb
      From-SVN: r274224
      GCC Administrator committed
  4. 08 Aug, 2019 11 commits
    • decl.c (grokdeclarator): Use id_loc and EXPR_LOCATION in a few error messages. · 327d3fd0
      /cp
      2019-08-08  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* decl.c (grokdeclarator): Use id_loc and EXPR_LOCATION in
      	a few error messages.
      
      /testsuite
      2019-08-08  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* g++.dg/cpp0x/enum20.C: Test location(s) too.
      	* g++.dg/other/friend3.C: Likewise.
      	* g++.dg/parse/dtor5.C: Likewise.
      	* g++.dg/parse/friend7.C: Likewise.
      	* g++.dg/template/error22.C: Likewise.
      	* g++.old-deja/g++.brendan/err-msg5.C: Likewise.
      
      From-SVN: r274220
      Paolo Carlini committed
    • rs6000: Rename DFP iterator and attr to DDTD and q · e35f75d3
      This is more in line with the other iterators we have, and a bit easier
      to read and write.
      
      
      	* config/rs6000/dfp.md (D64_D128): Rename to ...
      	(DDTD): ... this, throughout.
      	(dfp_suffix): Rename to ...
      	(q): ... this, throughout.
      
      From-SVN: r274218
      Segher Boessenkool committed
    • rs6000: Use iterators in more DFP patterns · b1bb8160
      I noticed some patterns in dfp.md could use the D64_D128 iterator but
      don't yet.  This converts all remaining simple cases.
      
      
      	* config/rs6000/dfp.md (D64_D128): Move earlier in the file.
      	(dfp_suffix): Ditto.
      	(adddd3, addtd3): Merge to ...
      	(add<mode>3 for D64_D128): ... this.
      	(subdd3, subtd3): Merge to ...
      	(sub<mode>3 for D64_D128): ... this.
      	(muldd3, multd3): Merge to ...
      	(mul<mode>3 for D64_D128): ... this.
      	(divdd3, divtd3): Merge to ...
      	(div<mode>3 for D64_D128): ... this.
      	(*cmpdd_internal1, *cmptd_internal1): Merge to ...
      	(*cmp<mode>_internal1 for D64_D128): ... this.
      	(ftruncdd2, ftrunctd2): Merge to ...
      	(ftrunc<mode>2 for D64_D128): ... this.
      	(fixdddi2, fixtddi2): Merge to ...
      	(fix<mode>di2 for D64_D128): ... this.
      
      From-SVN: r274217
      Segher Boessenkool committed
    • RISC-V: Fix C ABI for flattened struct with 0-length bitfield. · e98c3ee9
      	gcc/
      	PR target/91229
      	* config/riscv/riscv.c (riscv_flatten_aggregate_field): New arg
      	ignore_zero_width_bit_field_p.  Skip zero size bitfields when true.
      	Pass into recursive call.
      	(riscv_flatten_aggregate_argument): New arg.  Pass to
      	riscv_flatten_aggregate_field.
      	(riscv_pass_aggregate_in_fpr_pair_p): New local warned.  Call
      	riscv_flatten_aggregate_argument twice, with false and true as last
      	arg.  Process result twice.  Compare results and warn if different.
      	(riscv_pass_aggregate_in_fpr_and_gpr_p): Likewise.
      
      	gcc/testsuite/
      	* gcc.target/riscv/flattened-struct-abi-1.c: New test.
      	* gcc.target/riscv/flattened-struct-abi-2.c: New test.
      
      From-SVN: r274215
      Jim Wilson committed
    • re PR c++/79520 (Spurious caching for constexpr arguments) · 355229f2
      	PR c++/79520
      	* g++.dg/cpp1y/constexpr-79520.C: New test.
      
      From-SVN: r274214
      Marek Polacek committed
    • [C] Fix bogus nested enum error message · 99769e7f
      For:
      
          enum a { A };
          enum a { B };
      
      we emit a bogus error about nested definitions before the real error:
      
      foo.c:2:6: error: nested redefinition of ‘enum a’
          2 | enum a { B };
            |      ^
      foo.c:2:6: error: redeclaration of ‘enum a’
      foo.c:1:6: note: originally defined here
          1 | enum a { A };
            |      ^
      
      This is because we weren't clearing C_TYPE_BEING_DEFINED once the
      definition was over.
      
      I think it's OK to clear C_TYPE_BEING_DEFINED even for a definition
      that actually is nested (and so whose outer definition is still open),
      since we'll already have given an error by then.  It means that second
      and subsequent attempts to define a nested enum will usually get the
      redeclaration error instead of the nested error, but that seems just
      as accurate (nested_first and nested_second in the test).  The only
      exception is if the first nested enum was also invalid by being empty,
      but then the enum as a whole has already produced two errors
      (nested_empty in the test).
      
      2019-08-08  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/c/
      	* c-decl.c (finish_enum): Clear C_TYPE_BEING_DEFINED.
      
      gcc/testsuite/
      	* gcc.dg/pr79983.c (enum E): Don't allow an error about nested
      	definitions.
      	* gcc.dg/enum-redef-1.c: New test.
      
      From-SVN: r274213
      Richard Sandiford committed
    • PR c++/87519 - bogus warning with -Wsign-conversion. · 60bb9448
      	* typeck.c (cp_build_binary_op): Use same_type_p instead of comparing
      	the types directly.
      
      	* g++.dg/warn/Wsign-conversion-5.C: New test.
      
      From-SVN: r274211
      Marek Polacek committed
    • constexpr.c (inline_asm_in_constexpr_error): New. · 7c814975
      	* constexpr.c (inline_asm_in_constexpr_error): New.
      	(cxx_eval_constant_expression) <case ASM_EXPR>: Call it.
      	(potential_constant_expression_1) <case ASM_EXPR>: Likewise.
      
      	* g++.dg/cpp2a/inline-asm3.C: New test.
      
      From-SVN: r274210
      Marek Polacek committed
    • P0325R4 to_array from LFTS with updates · cb0de9b6
      As an extension to what the standard requires, this also adds
      conditional noexcept-specifiers to the std::to_array functions.
      
      	P0325R4 to_array from LFTS with updates
      	* include/experimental/array (to_array): Qualify call to __to_array.
      	* include/std/array (__cpp_lib_to_array, to_array): Define for C++20.
      	* include/std/version (__cpp_lib_to_array): Likewise.
      	* testsuite/23_containers/array/creation/1.cc: New test.
      	* testsuite/23_containers/array/creation/2.cc: New test.
      	* testsuite/23_containers/array/creation/3_neg.cc: New test.
      	* testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc:
      	Use zero for dg-error line number.
      
      From-SVN: r274209
      Jonathan Wakely committed
    • Fix file descriptor existence of MinGW. · 0fddb184
      2019-08-08  Martin Liska  <mliska@suse.cz>
      
      	PR bootstrap/91352
      	* gcc.c (driver::detect_jobserver): Use is_valid_fd.
      	* lto-wrapper.c (jobserver_active_p): Likewise.
      2019-08-08  Martin Liska  <mliska@suse.cz>
      
      	PR bootstrap/91352
      	* libiberty.h (is_valid_fd): New function.
      2019-08-08  Martin Liska  <mliska@suse.cz>
      
      	PR bootstrap/91352
      	* lrealpath.c (is_valid_fd): New function.
      
      From-SVN: r274208
      Martin Liska committed