Commit Graph

164000 Commits

Author SHA1 Message Date
Bernd Edlinger
0a4b0aa140 typeck2.c (digest_init_r): Fix overlength strings.
* typeck2.c (digest_init_r): Fix overlength strings.
	* vtable-class-hierarchy.c (build_key_buffer_arg): Make string literal
	NUL terminated.

From-SVN: r264286
2018-09-13 12:43:44 -06:00
Bernd Edlinger
8b393e9fb2 trans-array.c (gfc_conv_array_initializer): Remove excess precision from overlength string initializers.
* trans-array.c (gfc_conv_array_initializer): Remove excess precision
	from overlength string initializers.

From-SVN: r264285
2018-09-13 12:42:16 -06:00
Ian Lance Taylor
9fd1ec3371 compiler: implement //go:nowritebarrierrec
Reviewed-on: https://go-review.googlesource.com/134228

From-SVN: r264283
2018-09-13 17:49:07 +00:00
Ian Lance Taylor
f0d89c7759 runtime: avoid write barriers with traceback info
Unlike the gc runtime, libgo stores traceback information in location
    structs, which contain strings.  Therefore, copying location structs
    around appears to require write barriers, although in fact write
    barriers are never important because the strings are never allocated
    in Go memory.  They come from libbacktrace.
    
    Some of the generated write barriers come at times when write barriers
    are not permitted.  For example, exitsyscall, marked
    nowritebarrierrec, calls exitsyscallfast which calls traceGoSysExit
    which calls traceEvent which calls traceStackID which calls
    trace.stackTab.put which copies location values into memory allocated
    by tab.newStack.  This write barrier can be invoked when there is no
    p, causing a crash.
    
    This change fixes the problem by ensuring that location values are
    copied around in the tracing code with no write barriers.
    
    This was found by fixing the compiler to fully implement
    //go:nowritebarrierrec; CL to follow.
    
    Reviewed-on: https://go-review.googlesource.com/134226

From-SVN: r264282
2018-09-13 17:30:00 +00:00
Eric Botcazou
5f54d5fee4 re PR target/86812 (visium port needs updating for CVE-2017-5753)
PR target/86812
	* config/visium/visium.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define.

From-SVN: r264281
2018-09-13 17:27:00 +00:00
Eric Botcazou
131a075cc1 * Makefile.rtl (arm% linux-gnueabi%): Always set EH_MECHANISM to -arm.
From-SVN: r264278
2018-09-13 17:13:05 +00:00
Eric Botcazou
1fb90d5be8 re PR ada/81103 (gcc/ada/terminals.c: please remove unused termio.h)
PR ada/81103
	* terminals.c: Do not include termio.h.

From-SVN: r264277
2018-09-13 17:05:40 +00:00
Ian Lance Taylor
2919ad1ee3 libgo: build roots index to speed up bulkBarrierPreWrite
To reduce the amount of time spent in write barrier processing
    (specifically runtime.bulkBarrierPreWrite), add support for building a
    'GC roots index', basically a sorted list of all roots, so as to
    allow more efficient lookups of gcdata structures for globals. The
    previous implementation worked on the raw (unsorted) roots list
    itself, which did not scale well.
    
    Reviewed-on: https://go-review.googlesource.com/132595

From-SVN: r264276
2018-09-13 16:44:43 +00:00
Matthew Malcomson
16ddcc28b5 Add self to maintainers list.
2018-09-13  Matthew Malcomson  <matthew.malcomson@arm.com>

	* MAINTAINERS (Write After Approval): Add self.

From-SVN: r264275
2018-09-13 16:11:29 +00:00
Sam Tebbs
f952951202 MAINTAINERS (write_after_approval): Add myself.
2018-09-13  Sam Tebbs  <sam.tebbs@arm.com>

	* MAINTAINERS (write_after_approval): Add myself.

From-SVN: r264274
2018-09-13 16:03:05 +00:00
Richard Biener
85bc75f87b re PR tree-optimization/87263 (ICE on valid code at -O1: verify_ssa failed)
2018-09-13  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/87263
	* tree-ssa-sccvn.c (visit_phi): Revert some earlier changes.
	(struct unwind_state): Add max_rpo field.
	(do_rpo_vn): Allow up-to-date loop state to be used when not iterating.
	Compute max_rpo, the max RPO number a block can be backwards reached
	from.  Re-write non-iterating mode to a RPO ordered worklist approach,
	separating it from the iterating mode.

	* gcc.dg/torture/pr87263.c: New testcase.
	* gcc.dg/torture/ssa-fre-2.c: Likewise.
	* gcc.dg/torture/ssa-fre-3.c: Likewise.
	* gcc.dg/torture/ssa-fre-4.c: Likewise.

From-SVN: r264273
2018-09-13 14:15:41 +00:00
Jonathan Wakely
08233f0d6e Limit workaround for Clang bug to __clang_major__ <= 7
The bug https://bugs.llvm.org/show_bug.cgi?id=33222 is now fixed on
Clang trunk, so the workaround won't be needed for Clang 8.0 and later.

	* include/std/variant (variant) [__clang__]: Limit workaround to
	Clang 7 and older.

From-SVN: r264271
2018-09-13 14:47:14 +01:00
Vlad Lazar
d8d9514c87 Schedule by INSN_COST in case of tie
2018-09-13  Vlad Lazar  <vlad.lazar@arm.com>

	* haifa-sched.c (rank_for_schedule): Schedule by INSN_COST.
	(rfs_decision): New scheduling decision.

From-SVN: r264270
2018-09-13 13:43:48 +00:00
Richard Biener
2aa4cc744f re PR bootstrap/87134 (SEGV in cc1 caused by r263875)
2018-09-13  Richard Biener  <rguenther@suse.de>

	PR bootstrap/87134
	* tree-ssa-sccvn.c (vn_nary_op_insert_into): Fix assert.
	(vn_nary_op_insert_pieces_predicated): Do not write useless
	valid_dominated_by_p entry outside of the allocated storage.

From-SVN: r264268
2018-09-13 11:31:58 +00:00
Omar Sandoval
67295b6837 [debug] DWARF: add DW_AT_count to zero-length arrays
2018-09-13  Omar Sandoval  <osandov@osandov.com>
	    Tom de Vries  <tdevries@suse.de>

	PR debug/86985
	* dwarf2out.c (is_c): New function.
	(add_subscript_info): Add DW_AT_count of 0 for C zero-length arrays.

	* gcc.dg/guality/zero-length-array.c: New test.

Co-Authored-By: Tom de Vries <tdevries@suse.de>

From-SVN: r264267
2018-09-13 10:27:12 +00:00
Sam Tebbs
231c52ae41 [Aarch64] Exploiting BFXIL when OR-ing two AND-operations with appropriate bitmasks
2018-09-13  Sam Tebbs  <sam.tebbs@arm.com>

	PR target/85628
	* config/aarch64/aarch64.md (*aarch64_bfxil):
	Define.
	* config/aarch64/constraints.md (Ulc): Define.
	* config/aarch64/aarch64-protos.h (aarch64_high_bits_all_ones_p):
	Define.
	* config/aarch64/aarch64.c (aarch64_high_bits_all_ones_p):
	New function.

	* gcc.target/aarch64/combine_bfxil.c: New file.
	* gcc.target/aarch64/combine_bfxil_2.c: New file.

From-SVN: r264264
2018-09-13 09:46:55 +00:00
Vlad Lazar
0795f659b0 [AArch64] Add support for TARGET_COMPUTE_FRAME_LAYOUT
The patch adds support for the TARGET_COMPUTE_FRAME_LAYOUT hook on AArch64
and removes unneeded frame layout recalculation.

2018-09-13  Vlad Lazar  <vlad.lazar@arm.com>

	* config/aarch64/aarch64.h (TARGET_COMPUTE_FRAME_LAYOUT): Define.
	* config/aarch64/aarch64.c (aarch64_expand_prologue): Remove
	aarch64_layout_frame call.
	(aarch64_expand_epilogue): Likewise.
	(aarch64_initial_elimination_offset): Likewise.
	(aarch64_get_separate_components): Likewise.
	(aarch64_use_return_insn_p): Likewise.
	(aarch64_layout_frame): Remove unneeded check.

From-SVN: r264263
2018-09-13 09:36:58 +00:00
Jakub Jelinek
54de7d7dd0 configure.ac: Only append " ...
* configure.ac: Only append
	" : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS" to
	gcc_config_arguments if it was never reconfigured or last reconfigure
	was with different arguments.
	* configure: Regenerated.

From-SVN: r264262
2018-09-13 09:43:29 +02:00
Jakub Jelinek
d51232fb3b re PR middle-end/87290 (Optimize signed x % pow2p == cst)
PR middle-end/87290
	* expr.c (maybe_optimize_pow2p_mod_cmp): New function.
	(maybe_optimize_mod_cmp): Use it if integer_pow2p treeop1.

	* gcc.target/i386/pr87290.c: New test.
	* gcc.c-torture/execute/pr87290.c: New test.

Co-Authored-By: Kyrylo Tkachov <kyrylo.tkachov@arm.com>

From-SVN: r264261
2018-09-13 09:42:55 +02:00
Jakub Jelinek
392750c53e re PR tree-optimization/87287 (Move signed (x % pow2) == 0 optimization to gimple)
PR tree-optimization/87287
	* fold-const.c (fold_binary_loc) <case EQ_EXPR>: Move signed modulo
	X % C == 0 to X % (unsigned) C == 0 optimization to ...
	* match.pd (X % C == 0): ... here.  New optimization.

	* gcc.dg/tree-ssa/pr87287.c: New test.

From-SVN: r264260
2018-09-13 09:36:50 +02:00
Ian Lance Taylor
8a90f559d7 compiler: omit a couple of write barriers
Omit a write barrier for
        s = s[0:]
    for a slice s.  In this case the pointer is not changing and no write
    barrier is required.
    
    Omit a write barrier for
        s = append(s, v)
    in the case where len(s) < cap(s) (and similarly when appending more
    values).  When the slice has enough capacity the pointer is not
    changing and no write barrier is required.
    
    These changes are required to avoid write barriers in the method
    randomOrder.reset in the runtime package.  That method is called from
    procresize, at a point where we do not want to allocate memory.
    Otherwise that method can use a write barrier, allocate memory, and
    break TestReadMemStats.
    
    Reviewed-on: https://go-review.googlesource.com/134219

From-SVN: r264259
2018-09-13 00:45:55 +00:00
GCC Administrator
6201be94cd Daily bump.
From-SVN: r264258
2018-09-13 00:16:32 +00:00
Ville Voutilainen
b51da998ee re PR c++/87093 (is_constructible (__is_constructible() instrinsic) explicitly instantiates conversion member function of source)
PR c++/87093

gcc/cp

PR c++/87093
* method.c (constructible_expr): We're in an unevaluated context
in all cases, not just for class targets.

testsuite/

PR c++/87093
* g++.dg/ext/is_constructible2.C: New.

From-SVN: r264253
2018-09-13 00:10:43 +03:00
David Malcolm
4911b24d71 C++: special-case single non-viable candidate (more PR c++/85110)
I broke out the "no viable candidates" case in build_new_method_call_1
into a subroutine, and added special-case handling for when there's
a single non-viable candidate where there's an argument conversion
error.  I turned the error-handling from convert_for_assignment into
a subroutine, calling it from this new special-case.

This converts:

demo.cc: In function 'int test_4(int, const char*, float)':
demo.cc:5:44: error: no matching function for call to 's4::member_1(int&, const char*&, float&)'
5 |   return s4::member_1 (first, second, third);
  |                                            ^
demo.cc:1:24: note: candidate: 'static int s4::member_1(int, const char**, float)'
1 | struct s4 { static int member_1 (int one, const char **two, float three); };
  |                        ^~~~~~~~
demo.cc:1:56: note:   no known conversion for argument 2 from 'const char*' to 'const char**'
1 | struct s4 { static int member_1 (int one, const char **two, float three); };
  |                                           ~~~~~~~~~~~~~^~~

to:

demo.cc: In function 'int test_4(int, const char*, float)':
demo.cc:5:31: error: cannot convert 'const char*' to 'const char**'
5 |   return s4::member_1 (first, second, third);
  |                               ^~~~~~
  |                               |
  |                               const char*
demo.cc:1:56: note:   initializing argument 2 of 'static int s4::member_1(int, const char**, float)'
1 | struct s4 { static int member_1 (int one, const char **two, float three); };
  |                                           ~~~~~~~~~~~~~^~~

thus highlighting the problematic argument at the callsite (and its type).

gcc/cp/ChangeLog:
	PR c++/85110
	* call.c (struct conversion_info): Add "loc" field.
	(arg_conversion_rejection): Add "loc" param, using it to
	initialize the new field.
	(bad_arg_conversion_rejection): Likewise.
	(explicit_conversion_rejection): Initialize the new field to
	UNKNOWN_LOCATION.
	(template_conversion_rejection): Likewise.
	(add_function_candidate): Pass on the argument location to the new
	param of arg_conversion_rejection.
	(add_conv_candidate): Likewise.
	(build_builtin_candidate): Likewise.
	(build_user_type_conversion_1): Likewise.
	(single_z_candidate): New function.
	(maybe_get_bad_conversion_for_unmatched_call): New function.
	(complain_about_bad_argument): New function, based on part of
	convert_for_assignment.
	(build_new_method_call_1): Split out handling of the "no viable
	candidates" case into...
	(complain_about_no_candidates_for_method_call): ...this new
	function, and use the new functions above to special-case the
	handling of a single non-viable candidate due to a bad argument.
	* cp-tree.h (complain_about_bad_argument): New decl.
	* typeck.c (convert_for_assignment): Split out one error-handling
	case into complain_about_bad_argument.

gcc/testsuite/ChangeLog:
	PR c++/85110
	* g++.dg/cpp0x/explicit4.C: Update expected output to reflect
	special-casing of diagnostic for a single non-viable candidate due
	to a bad argument.
	* g++.dg/diagnostic/param-type-mismatch-2.C: Likewise.
	Add test coverage for an unmatched overloaded operator.
	* g++.dg/expr/pmf-1.C: Likewise.
	* g++.old-deja/g++.bugs/900330_02.C: Likewise.
	* g++.old-deja/g++.jason/conversion11.C: Likewise.
	* g++.old-deja/g++.law/arg11.C: Likewise.
	* g++.old-deja/g++.law/arm9.C: Likewise.
	* g++.old-deja/g++.robertl/eb131.C: Likewise.

From-SVN: r264250
2018-09-12 18:50:08 +00:00
Paul Thomas
3b582f1f3b re PR fortran/87284 (Allocation of class arrays with mold results in "conditional jump or move depends on uninitialised value")
2018-09-12  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/87284
	* trans-expr.c (gfc_trans_class_init_assign): Access to
	to array elements of the dynamic type requires that the array
	reference be added to the class expression and not the _data
	component, unlike scalar expressions.

2018-09-12  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/87284
	* gfortran.dg/allocate_with_mold_2.f90: New test.

From-SVN: r264249
2018-09-12 18:33:13 +00:00
Jakub Jelinek
c0cbe5260f re PR middle-end/82853 (Optimize x % 3 == 0 without modulo)
PR middle-end/82853
	* expr.h (maybe_optimize_mod_cmp): Declare.
	* expr.c (mod_inv): New function.
	(maybe_optimize_mod_cmp): New function.
	(do_store_flag): Use it.
	* cfgexpand.c (expand_gimple_cond): Likewise.

	* gcc.target/i386/pr82853-1.c: New test.
	* gcc.target/i386/pr82853-2.c: New test.

From-SVN: r264248
2018-09-12 20:28:20 +02:00
Cesar Philippidis
8e36332cf6 [OpenACC] C++ reference mapping
2018-09-09  Cesar Philippidis  <cesar@codesourcery.com>
	    Julian Brown  <julian@codesourcery.com>

	PR middle-end/86336

	gcc/cp/
	* semantics.c (finish_omp_clauses): Treat C++ references the same in
	OpenACC as OpenMP.

	gcc/
	* gimplify.c (gimplify_scan_omp_clauses): Set
	target_firstprivatize_array_bases in OpenACC parallel and kernels
	region contexts.  Remove GOMP_MAP_FIRSTPRIVATE_REFERENCE clauses from
	OpenACC data regions.

	libgomp/
	* testsuite/libgomp.oacc-c++/non-scalar-data.C: Remove XFAIL.

Co-Authored-By: Julian Brown <julian@codesourcery.com>

From-SVN: r264244
2018-09-12 15:21:19 +00:00
Uros Bizjak
c749305900 i386.md (sqrt_extend<mode>xf3_i387): Remove.
* config/i386/i386.md (sqrt_extend<mode>xf3_i387): Remove.
	(sqrt<mode>2): Extend operand 1 to XFmode and generate sqrtxf3 insn.

From-SVN: r264243
2018-09-12 17:04:41 +02:00
Richard Biener
b25508e0cc re PR tree-optimization/87280 (ICE in set_ssa_val_to, at tree-ssa-sccvn.c:3647)
2018-09-12  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/87280
	* tree-ssa-sccvn.c (process_bb): Handle the case of executable
	edge but unreachable target.
	(do_rpo_vn): For conservatively handling a PHI only mark
	the backedge executable but not the block reachable.

	* gcc.dg/torture/pr87280.c: New testcase.

From-SVN: r264241
2018-09-12 14:03:21 +00:00
Kwok Cheung Yeung
72ced87475 Fix interleaving of Fortran STOP messages
Fortran STOP and ERROR STOP use a different function to print the "STOP" string
and the message string.  On GCN this results in out-of-order output, such as
"<msg>ERROR STOP ".

This patch fixes the problem by making estr_write use the proper Fortran write,
not C printf, so both parts are now output the same way.  This also ensures
that both parts are output to STDERR (not that that means anything on GCN).

2018-09-12  Kwok Cheung Yeung  <kcy@codesourcery.com>

	libgfortran/
	* runtime/minimal.c (estr_write): Define in terms of write.

From-SVN: r264239
2018-09-12 13:53:34 +00:00
Andrew Stubbs
4986a9568a Fix Fortran STOP.
The minimal libgfortran setup was created for NVPTX, but will also be used by
AMD GCN.

This patch simply removes an assumption that NVPTX is the only user.
Specifically, NVPTX exit is broken, but AMD GCN exit works just fine.

2018-09-12  Andrew Stubbs  <ams@codesourcery.com>

	libgfortran/
	* runtime/minimal.c (exit): Only work around nvptx bugs on nvptx.

From-SVN: r264238
2018-09-12 13:53:32 +00:00
Richard Biener
28c4b740a6 re PR tree-optimization/87266 (ICE: Segmentation fault (in useless_type_conversion_p, tree_nop_conversion_p, or is_gimple_reg_type))
2018-09-12  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/87266
	* tree-ssa-sccvn.c (do_rpo_vn): Always iterate to not yet
	visited blocks.

	* gcc.dg/torture/pr87266-1.c: New testcase.
	* gcc.dg/torture/pr87266-2.c: Likewise.
	* gcc.dg/torture/pr87266-3.c: Likewise.
	* gcc.dg/torture/pr87266-4.c: Likewise.

From-SVN: r264237
2018-09-12 12:14:27 +00:00
Andreas Krebbel
ced8d88234 S/390: Use proper rounding mode for DFP to BFD conversions
According to IEEE 754 2008 4.3 'Rounding-direction attributes' the
rounding mode of the target format needs to be used. By not setting
the value so far we have always used the DFP rounding mode.

gcc/ChangeLog:

2018-09-12  Andreas Krebbel  <krebbel@linux.ibm.com>

	* config/s390/s390.md (PFPO_RND_MODE_DFP, PFPO_RND_MODE_BFP): New
	constants.
	("trunc<BFP:mode><DFP_ALL:mode>2")
	("trunc<DFP_ALL:mode><BFP:mode>2")
	("extend<BFP:mode><DFP_ALL:mode>2")
	("extend<DFP_ALL:mode><BFP:mode>2"): Set proper rounding mode
	according to the target operand type.

gcc/testsuite/ChangeLog:

2018-09-12  Andreas Krebbel  <krebbel@linux.ibm.com>

	* gcc.target/s390/dfp_to_bfp_rounding.c: New test.

From-SVN: r264234
2018-09-12 10:58:42 +00:00
Martin Liska
7e7a6ed74d Add quotes for -fconstexpr-depth= in an error message.
From-SVN: r264233
2018-09-12 10:39:45 +00:00
Jakub Jelinek
6cd4c66e9b re PR tree-optimization/86844 (wrong code caused by store merging pass)
PR tree-optimization/86844
	* gimple-ssa-store-merging.c
	(imm_store_chain_info::coalesce_immediate): For overlapping stores, if
	there are any overlapping stores in between them, make sure they are
	also coalesced or we give up completely.

	* gcc.c-torture/execute/pr86844.c: New test.
	* gcc.dg/store_merging_22.c: New test.
	* gcc.dg/store_merging_23.c: New test.

Co-Authored-By: Andreas Krebbel <krebbel@linux.ibm.com>

From-SVN: r264232
2018-09-12 11:25:07 +02:00
Jakub Jelinek
9095b53a8c re PR middle-end/87248 (Bad code for masked operations involving signed ints)
PR middle-end/87248
	* fold-const.c (fold_ternary_loc) <case COND_EXPR>: Verify also that
	BIT_AND_EXPR's second operand is a power of two.  Formatting fix.

	* c-c++-common/torture/pr87248.c: New test.

From-SVN: r264230
2018-09-12 11:18:55 +02:00
Tom de Vries
03e992acea [debug] Add -gdescribe-dies
This patch adds option -gdescribe-dies.  It sets the DW_AT_description
attribute of dies that do not get a DW_AT_name attribute, to make it easier
to figure out what the die is describing.

The option exports the names of artificial variables:
...
 DIE    0: DW_TAG_variable (0x7fa934dd54b0)
+  DW_AT_description: "D.1922"
   DW_AT_type: die -> 0 (0x7fa934dd0d70)
   DW_AT_artificial: 1

...
which can be traced back to gimple dumps:
...
  char a[0:D.1922] [value-expr: *a.0];
...

Furthermore, it adds names to external references:
...
 DIE    0: DW_TAG_subprogram (0x7fa88b9650f0)
+DW_AT_description: "main"
 DW_AT_abstract_origin: die -> label: vla_1.c.6719312a + 29 (0x7fa88b965140)
...
and likewise to DW_TAG_call_site_parameter DIEs.

Bootstrapped and reg-tested on x86_64.

2018-09-12  Tom de Vries  <tdevries@suse.de>

	* common.opt (gdescribe-dies): Add option.
	* dwarf2out.c (add_name_and_src_coords_attributes): Add description
	attribute for artifical and nameless decls.
	(dwarf2out_register_external_die): Add description attribute to
	external reference die.
	(add_desc_attribute): New functions.
	(gen_subprogram_die): Add description attribute to
	DW_TAG_call_site_parameter.
	* tree-pretty-print.c (print_generic_expr_to_str): New function.
	* tree-pretty-print.h (print_generic_expr_to_str): Declare.
	* doc/invoke.texi (@item Debugging Options): Add -gdescribe-dies and
	-gno-describe-dies.
	(@item -gdescribe-dies): Add.

From-SVN: r264229
2018-09-12 07:27:26 +00:00
Aldy Hernandez
28aa632320 tree-vrp.c (vrp_shift_undefined_p): Remove.
* tree-vrp.c (vrp_shift_undefined_p): Remove.
	(extract_range_from_binary_expr_1: Call
	wide_int_range_shift_undefined_p instead of vrp_shift_undefined_p.
	* wide-int-range.h (wide_int_range_shift_undefined_p): Do not
	depend on sign.

From-SVN: r264228
2018-09-12 07:04:19 +00:00
Aldy Hernandez
bb753cad99 * gimple-ssa-warn-alloca.c
(alloca_type_and_limit::alloca_type_and_limit): Initialize limit
	field for ALLOCA_BOUND_*_LARGE.

From-SVN: r264227
2018-09-12 06:50:34 +00:00
GCC Administrator
be67308441 Daily bump.
From-SVN: r264226
2018-09-12 00:16:47 +00:00
Nathan Sidwell
3d80fcaa4a * gcc.c (load_specs, execute, run_attempt): Use %qs not '%s'.
From-SVN: r264217
2018-09-11 21:34:14 +00:00
Uros Bizjak
1f621085b8 reg-stack.c (subst_asm_stack_regs): Call replace_reg also for clobbers.
* reg-stack.c (subst_asm_stack_regs): Call replace_reg also
	for clobbers.  Remove obsolete comment.

From-SVN: r264216
2018-09-11 21:36:35 +02:00
Janus Weil
0e4cb16f56 re PR fortran/87172 (Spurious "Derived type 'c_funptr' at (1) has not been declared" error after r263782)
fix PR 87172

2018-09-11  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/87172
	* resolve.c (resolve_fl_derived): If a type has the 'use_assoc'
	attribute, then it was declared in another module, so there should be
	no error that it has not been declared.

2018-09-11  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/87172
	* gfortran.dg/iso_c_binding_only_2.f90: New test case.

From-SVN: r264214
2018-09-11 19:44:04 +02:00
Uros Bizjak
2e3d242234 i386.md (define_attr "type"): Remove mpxmov, mpxmk, mpxchk, mpxld and mpxst types.
* config/i386/i386.md (define_attr "type"): Remove mpxmov, mpxmk,
	mpxchk, mpxld and mpxst types.
	(define_attr length_immediate): Remove all processing of mpx types.
	(define_attr prefix_0f): Ditto.
	(define_attr memory): Ditto.

From-SVN: r264212
2018-09-11 18:53:15 +02:00
Uros Bizjak
ae1ef78018 i386.md (fyl2x_extend<mode>xf3_i387): Remove.
* config/i386/i386.md (fyl2x_extend<mode>xf3_i387): Remove.
	(log<mode>2): Change operand 1 predicate to general_operand.
	Extend operand 1 to XFmode and generate logxf3 insn.
	(log10<mode>2): Change operand 1 predicate to general_operand.
	Extend operand 1 to XFmode and generate log10xf3 insn.
	(log2<mode>2): Change operand 1 predicate to general_operand.
	Extend operand 1 to XFmode and generate log2xf3 insn.
	(fyl2xp1_extend<mode>xf3_i387): Remove.
	(log1p<mode>2): Change operand 1 predicate to general_operand.
	Extend operand 1 to XFmode and generate log1pxf3 insn.
	(fxtract_extend<mode>xf3_i387): Remove.
	(logb<mode>2): Change operand 1 predicate to general_operand.
	Extend operand 1 to XFmode and generate logbxf3 insn.
	(ilogb<mode>2): Change operand 1 predicate to general_operand.
	Extend operand 1 to XFmode and generate fxtractxf3_i387 insn.
	(significand<mode>2): Change operand 1 predicate to general_operand.
	Extend operand 1 to XFmode and generate significandxf3 insn.

From-SVN: r264211
2018-09-11 18:42:35 +02:00
Paul Thomas
3b949026d4 re PR fortran/87277 (Segfault on using array component of class scalar pointer as an actual argument)
2018-09-11  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/87277
	* expr.c (is_subref_array): Add the check of dimensionality for
	class, dummy, pointer arrays.

2018-09-11  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/87277
	* gfortran.dg/select_type_43.f90: New test.

From-SVN: r264210
2018-09-11 15:59:07 +00:00
Nathan Sidwell
b34e743c9c [driver] Use regular error routines
https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00545.html
	* gcc.c (perror_with_name, pfatal_with_name): Delete.
	(load_specs): Use fatal_error.
	(DELETE_IF_ORDINARY, process_command): Use error.
	(execute, run_attempt): Use fatal_error.

	* gcc.dg/driver-specs.c: New.

From-SVN: r264209
2018-09-11 15:03:05 +00:00
Jonathan Wakely
9e2d426c17 PR libstdc++/87278 restore support for std::make_shared<volatile T>()
PR libstdc++/87278
	* include/bits/shared_ptr.h (make_shared): Use remove_cv instead of
	remove_const.
	* testsuite/20_util/shared_ptr/creation/87278.cc: New test.

From-SVN: r264207
2018-09-11 12:50:39 +01:00
Jonathan Wakely
86fc6ec9f3 Implement LWG 2905 changes to constrain unique_ptr constructors
LWG DR 2905 says that is_constructible_v<unique_ptr<P, D>, P, D const &>
should be false when D is not copy constructible. This commit implements
the changes from the DR and simplifies the signatures as per
https://github.com/cplusplus/draft/issues/1530

	* include/bits/unique_ptr.h (__uniq_ptr_impl): Add assertions to
	check deleter type.
	(unique_ptr::unique_ptr(pointer, const deleter_type&)): Add copy
	constructible constraint.
	(unique_ptr::unique_ptr(pointer, deleter_type&&)): Disable for
	deleters of reference type and add move constructible constraint.
	(unique_ptr::unique_ptr(pointer, remove_reference_t<deleter_type>&&)):
	Disable for deleters of non-reference type. Define as deleted.
	(unique_ptr<T[], D>): Likewise.
	* testsuite/20_util/unique_ptr/assign/48635_neg.cc: Replace dg-error
	directives with unstable line numbers with dg-prune-output.
	* testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Likewise.
	* testsuite/20_util/unique_ptr/cons/lwg2905.cc: New test.
	* testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc:
	Make deleter types invocable.

From-SVN: r264206
2018-09-11 11:55:49 +01:00
Aldy Hernandez
9356a18eb4 Fix typo in my last ChangeLog entry.
From-SVN: r264205
2018-09-11 10:36:20 +00:00