Commit Graph

169104 Commits

Author SHA1 Message Date
Dimitar Dimitrov
ae7deb4b85 Initial TI PRU libgcc port
libgcc/ChangeLog:

2019-06-12  Dimitar Dimitrov  <dimitar@dinux.eu>

	* config.host: Add PRU target.
	* config/pru/asri.c: New file.
	* config/pru/eqd.c: New file.
	* config/pru/eqf.c: New file.
	* config/pru/ged.c: New file.
	* config/pru/gef.c: New file.
	* config/pru/gtd.c: New file.
	* config/pru/gtf.c: New file.
	* config/pru/led.c: New file.
	* config/pru/lef.c: New file.
	* config/pru/lib2bitcountHI.c: New file.
	* config/pru/lib2divHI.c: New file.
	* config/pru/lib2divQI.c: New file.
	* config/pru/lib2divSI.c: New file.
	* config/pru/libgcc-eabi.ver: New file.
	* config/pru/ltd.c: New file.
	* config/pru/ltf.c: New file.
	* config/pru/mpyll.S: New file.
	* config/pru/pru-abi.h: New file.
	* config/pru/pru-asm.h: New file.
	* config/pru/pru-divmod.h: New file.
	* config/pru/sfp-machine.h: New file.
	* config/pru/t-pru: New file.

From-SVN: r272204
2019-06-12 19:28:51 +00:00
Dimitar Dimitrov
3e209f57c0 Fix ChangeLog dates for last commit
From-SVN: r272203
2019-06-12 19:26:31 +00:00
Dimitar Dimitrov
8d2af3a25b Initial TI PRU GCC port
ChangeLog:

2019-06-19  Dimitar Dimitrov  <dimitar@dinux.eu>

	* configure: Regenerate.
	* configure.ac: Add PRU target.

gcc/ChangeLog:

2019-06-19  Dimitar Dimitrov  <dimitar@dinux.eu>

	* common/config/pru/pru-common.c: New file.
	* config.gcc: Add PRU target.
	* config/pru/alu-zext.md: New file.
	* config/pru/constraints.md: New file.
	* config/pru/predicates.md: New file.
	* config/pru/pru-opts.h: New file.
	* config/pru/pru-passes.c: New file.
	* config/pru/pru-pragma.c: New file.
	* config/pru/pru-protos.h: New file.
	* config/pru/pru.c: New file.
	* config/pru/pru.h: New file.
	* config/pru/pru.md: New file.
	* config/pru/pru.opt: New file.
	* config/pru/t-pru: New file.
	* doc/extend.texi: Document PRU pragmas.
	* doc/invoke.texi: Document PRU-specific options.
	* doc/md.texi: Document PRU asm constraints.

From-SVN: r272202
2019-06-12 19:04:24 +00:00
Steven G. Kargl
974b8e618b re PR fortran/90002 (ICE: free_expr0(): Bad expr type)
2019-06-12  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/90002
	* array.c (gfc_free_array_spec): When freeing an array-spec, avoid
	an ICE for assumed-shape coarrays 

2019-06-12  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/90002
	* gfortran.dg/pr90002.f90: New test.

From-SVN: r272201
2019-06-12 18:28:32 +00:00
Martin Sebor
e97bf6bbbd Update last ChangeLog entry.
From-SVN: r272200
2019-06-12 11:27:41 -06:00
Martin Sebor
313b30efe5 PR middle-end/90676 - default GIMPLE dumps lack information
gcc/ChangeLog:

	PR middle-end/90676
	* tree-pretty-print.c (dump_mem_ref): New function.  Include
	MEM_REF type in output when different size than operand.
	(dump_generic_node): Move code to dump_mem_ref and call it.

gcc/testsuite/ChangeLog:

	PR middle-end/90676
	* gcc.dg/tree-ssa/dump-6.c: New test.
	* g++.dg/tree-ssa/pr19807.C: Adjust expected output.
	* g++.dg/tree-ssa/ssa-dse-1.C: Same.
	* gcc.dg/store_merging_5.c: Same.
	* gcc.dg/tree-prof/stringop-2.c: Same.
	* gcc.dg/tree-ssa/pr30375.c: Same.
	* gcc.dg/tree-ssa/slsr-27.c: Same.
	* gcc.dg/tree-ssa/slsr-28.c: Same.
	* gcc.dg/tree-ssa/slsr-29.c: Same.
	* gcc.dg/tree-ssa/ssa-dse-24.c: Same.

From-SVN: r272199
2019-06-12 11:05:35 -06:00
Martin Sebor
7802a8ec9a PR tree-optimization/90662 - strlen of a string in a vla plus offset not folded
gcc/ChangeLog:

	PR tree-optimization/90662
	* tree-ssa-strlen.c (get_stridx): Handle simple VLAs and pointers
	to arrays.

gcc/testsuite/ChangeLog:

	PR tree-optimization/90662
	* gcc.dg/strlenopt-62.c: New test.
	* gcc.dg/strlenopt-63.c: New test.
	* gcc.dg/strlenopt-64.c: New test.

From-SVN: r272197
2019-06-12 10:33:04 -06:00
Tom de Vries
4b557bcc0d [nvptx] Assert fork has at most one join in nvptx_find_par
With the test-case of PR90009 we run into a SIGSEGV in nvptx_neuter_pars,
because par->join_insn and par->join_block are NULL.

Detect this problem earlier, by adding an assert in nvptx_find_par that
asserts that a fork cannot be paired with more than one join.

Build and tested on x86_64 with nvptx accelerator enabled.

2019-06-12  Tom de Vries  <tdevries@suse.de>

	PR tree-optimization/90009
	* config/nvptx/nvptx.c (nvptx_find_par): Assert fork has at most join.

From-SVN: r272189
2019-06-12 14:56:18 +00:00
Jonathan Wakely
801b2266de Improve static_assert messages for std::variant
Also fix a warning with -Wunused-parameter -Wsystem-headers.

	* include/std/variant (get<T>, get<N>, get_if<N>, get_if<T>)
	(variant::emplace): Change static_assert messages from "should be"
	to "must be".
	(hash<monostate>::operator()): Remove name of unused parameter.

From-SVN: r272188
2019-06-12 15:52:09 +01:00
Jonathan Wakely
ce657a7414 Simplify std::scoped_lock destructor
* include/std/mutex (scoped_lock::~scoped_lock()): Use fold
	expression.

From-SVN: r272187
2019-06-12 15:52:06 +01:00
Jonathan Wakely
cd0b94e650 Replace std::to_string for integers with optimized version
The std::to_chars functions from C++17 can be used to implement
std::to_string with much better performance than calling snprintf. Only
the __detail::__to_chars_len and __detail::__to_chars_10 functions are
needed for to_string, because it always outputs base 10 representations.

The return type of __detail::__to_chars_10 should not be declared before
C++17, so the function body is extracted into a new function that can be
reused by to_string and __detail::__to_chars_10.

The existing tests for to_chars rely on to_string to check for correct
answers. Now that they use the same code that doesn't actually ensure
correctness, so add new tests for std::to_string that compare against
printf output.

	* include/Makefile.am: Add new <bits/charconv.h> header.
	* include/Makefile.in: Regenerate.
	* include/bits/basic_string.h (to_string(int), to_string(unsigned))
	(to_string(long), to_string(unsigned long), to_string(long long))
	(to_string(unsigned long long)): Rewrite to use __to_chars_10_impl.
	* include/bits/charconv.h: New header.
	(__detail::__to_chars_len): Move here from <charconv>.
	(__detail::__to_chars_10_impl): New function extracted from
	__detail::__to_chars_10.
	* include/std/charconv (__cpp_lib_to_chars): Add, but comment out.
	(__to_chars_unsigned_type): New class template that reuses
	__make_unsigned_selector_base::__select to pick a type.
	(__unsigned_least_t): Redefine as __to_chars_unsigned_type<T>::type.
	(__detail::__to_chars_len): Move to new header.
	(__detail::__to_chars_10): Add inline specifier. Move code doing the
	output to __detail::__to_chars_10_impl and call that.
	* include/std/version (__cpp_lib_to_chars): Add, but comment out.
	* testsuite/21_strings/basic_string/numeric_conversions/char/
	to_string.cc: Fix reference in comment. Remove unused variable.
	* testsuite/21_strings/basic_string/numeric_conversions/char/
	to_string_int.cc: New test.

From-SVN: r272186
2019-06-12 15:52:02 +01:00
Martin Liska
ff7b3aa51f Disable hash-table sanitization for mem stats maps.
2019-06-12  Martin Liska  <mliska@suse.cz>

	* ggc-common.c (ggc_prune_overhead_list): Do not sanitize
	the created map.
	* hash-map.h: Add sanitize_eq_and_hash into ::hash_map.
	* mem-stats.h (mem_alloc_description::mem_alloc_description):
	Do not sanitize created maps.

From-SVN: r272183
2019-06-12 13:07:07 +00:00
Aldy Hernandez
57bbc3e2f0 Remove value_range_constant_singleton in favor of value_range::singleton_p.
From-SVN: r272182
2019-06-12 12:53:20 +00:00
Jakub Jelinek
26d7a5e690 re PR target/90811 ([nvptx] ptxas error on OpenMP offloaded code)
PR target/90811
	* cfgexpand.c (align_local_variable): Add really_expand argument,
	don't SET_DECL_ALIGN if it is false.
	(add_stack_var): Add really_expand argument, pass it through to
	align_local_variable.
	(expand_one_stack_var_1): Pass true as really_expand to
	align_local_variable.
	(expand_one_ssa_partition): Pass true as really_expand to
	add_stack_var.
	(expand_one_var): Pass really_expand through to add_stack_var.

From-SVN: r272181
2019-06-12 11:31:26 +02:00
Przemyslaw Wirkus
84ae721396 [arm] Implement usadv16qi and ssadv16qi standard names
This patch implements the usadv16qi and ssadv16qi standard names for arm.

The V16QImode variant is important as it is the most commonly used pattern:
reducing vectors of bytes into an int.
The midend expects the optab to compute the absolute differences of operands 1
and 2 and reduce them while widening along the way up to SImode. So the inputs
are V16QImode and the output is V4SImode.

I've based my solution on Aarch64 usadv16qi and ssadv16qi standard names
current implementation (r260437). This solution emits below sequence of
instructions:

        VABDL.u8        tmp, op1, op2   # op1, op2 lowpart
        VABAL.u8        tmp, op1, op2   # op1, op2 highpart
        VPADAL.u16      op3, tmp

So, for the code:

$ arm-none-linux-gnueabihf-gcc -S -O3 -march=armv8-a+simd -mfpu=auto -mfloat-abi=hard usadv16qi.c -dp

#define N 1024
unsigned char pix1[N];
unsigned char pix2[N];

int
foo (void)
{
  int i_sum = 0;
  int i;
  for (i = 0; i < N; i++)
    i_sum += __builtin_abs (pix1[i] - pix2[i]);
  return i_sum;
}

we now generate on arm:
foo:
        movw    r3, #:lower16:pix2      @ 57    [c=4 l=4]  *arm_movsi_vfp/3
        movt    r3, #:upper16:pix2      @ 58    [c=4 l=4]  *arm_movt/0
        vmov.i32        q9, #0  @ v4si  @ 3     [c=4 l=4]  *neon_movv4si/2
        movw    r2, #:lower16:pix1      @ 59    [c=4 l=4]  *arm_movsi_vfp/3
        movt    r2, #:upper16:pix1      @ 60    [c=4 l=4]  *arm_movt/0
        add     r1, r3, #1024   @ 8     [c=4 l=4]  *arm_addsi3/4
.L2:
        vld1.8  {q11}, [r3]!    @ 11    [c=8 l=4]  *movmisalignv16qi_neon_load
        vld1.8  {q10}, [r2]!    @ 10    [c=8 l=4]  *movmisalignv16qi_neon_load
        cmp     r1, r3  @ 21    [c=4 l=4]  *arm_cmpsi_insn/2
        vabdl.u8        q8, d20, d22    @ 12    [c=8 l=4]  neon_vabdluv8qi
        vabal.u8        q8, d21, d23    @ 15    [c=88 l=4]  neon_vabaluv8qi
        vpadal.u16      q9, q8  @ 16    [c=8 l=4]  neon_vpadaluv8hi
        bne     .L2             @ 22    [c=16 l=4]  arm_cond_branch
        vadd.i32        d18, d18, d19   @ 24    [c=120 l=4]  quad_halves_plusv4si
        vpadd.i32       d18, d18, d18   @ 25    [c=8 l=4]  neon_vpadd_internalv2si
        vmov.32 r0, d18[0]      @ 30    [c=12 l=4]  vec_extractv2sisi/1

instead of:
foo:
        @ args = 0, pretend = 0, frame = 0
        @ frame_needed = 0, uses_anonymous_args = 0
        @ link register save eliminated.
        movw    r3, #:lower16:pix1
        movt    r3, #:upper16:pix1
        vmov.i32        q9, #0  @ v4si
        movw    r2, #:lower16:pix2
        movt    r2, #:upper16:pix2
        add     r1, r3, #1024
.L2:
        vld1.8  {q8}, [r3]!
        vld1.8  {q11}, [r2]!
        vmovl.u8 q10, d16
        cmp     r1, r3
        vmovl.u8 q8, d17
        vmovl.u8 q12, d22
        vmovl.u8 q11, d23
        vsub.i16        q10, q10, q12
        vsub.i16        q8, q8, q11
        vabs.s16        q10, q10
        vabs.s16        q8, q8
        vaddw.s16       q9, q9, d20
        vaddw.s16       q9, q9, d21
        vaddw.s16       q9, q9, d16
        vaddw.s16       q9, q9, d17
        bne     .L2
        vadd.i32        d18, d18, d19
        vpadd.i32       d18, d18, d18
        vmov.32 r0, d18[0]

2019-06-12  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>

        * config/arm/iterators.md (VABAL): New int iterator.
        * config/arm/neon.md (<sup>sadv16qi): New define_expand.
        * config/arm/unspecs.md ("unspec"): Define UNSPEC_VABAL_S, UNSPEC_VABAL_U
        values.

        * gcc.target/arm/ssadv16qi.c: New test.
        * gcc.target/arm/usadv16qi.c: Likewise.

From-SVN: r272180
2019-06-12 08:27:59 +00:00
Martin Liska
d134323ba9 Remove wrong assert about single value profiler.
2019-06-12  Martin Liska  <mliska@suse.cz>

	* value-prof.c (stream_out_histogram_value): Only first value
	can't be negative.

From-SVN: r272179
2019-06-12 07:17:42 +00:00
Jakub Jelinek
f3139680c3 re PR c/90760 (ICE on attributes section and alias in set_section, at symtab.c:1573)
PR c/90760
	* symtab.c (symtab_node::set_section): Allow being called on aliases
	as long as they aren't analyzed yet.

	* gcc.dg/pr90760.c: New test.

From-SVN: r272178
2019-06-12 09:14:08 +02:00
GCC Administrator
bfde1e2173 Daily bump.
From-SVN: r272177
2019-06-12 00:16:15 +00:00
Matthew Beliveau
8b164a4e1d removed extra .com, fixed e-mail.
From-SVN: r272170
2019-06-11 20:15:43 +00:00
Faraz Shahbazker
9570f46f96 mips.c (mips_final_postscan_insn): Modify call to `mips_set_text_contents_type' to indicate whether a non-debug...
* config/mips/mips.c (mips_final_postscan_insn): Modify call
	to `mips_set_text_contents_type' to indicate whether a
	non-debug insn follows.

	* gcc.target/mips/data-sym-pool.c: Update expected output.
	* gcc.target/mips/data-sym-multi-pool.c: New test.

From-SVN: r272169
2019-06-11 14:09:57 -06:00
Matthew Beliveau
536b4592a1 * MAINTAINERS (Write After Approval): Add myself.
From-SVN: r272168
2019-06-11 19:31:36 +00:00
Iain Sandoe
e7f5de7d65 Darwin, testsuite - Fix PR 65364 (uninit-19.c).
This test currently fails on Darwin, because the port inlines fn2 for
both PIC (and non-pic for m32).  Fixed by adjusting the target condition.

2019-06-11  Iain Sandoe  <iain@sandoe.co.uk>

	PR testsuite/65364
	* gcc.dg/uninit-19.c (fn1): Adjust target condition for Darwin.
	(fn2): Likewise.

From-SVN: r272167
2019-06-11 18:22:58 +00:00
Michael Meissner
85775141e3 Do not enable -mpcrel by default at the current time
From-SVN: r272165
2019-06-11 17:36:58 +00:00
Jakub Jelinek
ce9c4ec3c5 re PR target/90811 ([nvptx] ptxas error on OpenMP offloaded code)
PR target/90811
	* config/nvptx/nvptx.c (nvptx_output_softstack_switch): Use and.b%d
	instead of and.u%d.

	* testsuite/libgomp.c/pr90811.c: New test.

From-SVN: r272161
2019-06-11 18:40:10 +02:00
Edward Smith-Rowland
d37c29f942 Fix ConstexprIterator requirements tests - No constexpr algorithms!
2019-06-09  Edward Smith-Rowland  <3dw4rd@verizon.net>

	Fix ConstexprIterator requirements tests - No constexpr algorithms!
	* testsuite/21_strings/basic_string_view/requirements/constexpr_iter.cc:
	Replace copy with hand-rolled loop.
	* testsuite/23_containers/array/requirements/constexpr_iter.cc:
	Ditto.

From-SVN: r272159
2019-06-11 16:29:35 +00:00
Marc Glisse
9adfa8e25f Allow conversions in X/[ex]4 < Y/[ex]4
2019-06-11  Marc Glisse  <marc.glisse@inria.fr>

gcc/
	* match.pd (X/[ex]4<Y/[ex]4): Handle conversions.

gcc/testsuite/
	* gcc.dg/tree-ssa/cmpexactdiv-5.c: New file.

From-SVN: r272158
2019-06-11 15:22:43 +00:00
Matthew Beliveau
d3786ebbb0 PR c++/90449 - add -Winaccessible-base option.
* doc/invoke.texi (Winaccessible-base): Document.

       * c.opt (Winaccessible-base): Added new option.

       * class.c (warn_about_ambiguous_bases): Changed name to:
       maybe_warn_about_inaccessible_bases.
       (maybe_warn_about_inaccessible_bases):  Implemented new
       Winaccessible-base warning option for both direct and virtual
       base warnings.
       (layout_class_type): Call to warn_about_ambiguous_bases changed to fit
       new name.

       	* g++.dg/warn/Winaccessible-base-1.C: New file.
       	* g++.dg/warn/Winaccessible-base-2.C: New file.
       	* g++.dg/warn/Winaccessible-virtual-base-1.C: New file.
       	* g++.dg/warn/Winaccessible-virtual-base-2.C: New file.

From-SVN: r272157
2019-06-11 15:03:21 +00:00
Richard Biener
da10c17800 re PR c++/90801 (A recurring hang)
2019-06-11  Richard Biener  <rguenther@suse.de>

	PR c++/90801
	* typeck2.c (split_nonconstant_init_1): Avoid ordered remove
	from CONSTRUCTOR by marking to remove elements and doing all
	of them in a O(n) scan.

From-SVN: r272156
2019-06-11 14:03:41 +00:00
Jakub Jelinek
5a5da48013 re PR c++/90810 (Different intrinsics behavior on G++ 7.4 and G++ 8.3)
PR c++/90810
	* init.c (constant_value_1): Handle VECTOR_CST DECL_INITIAL for
	!DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P decls like CONSTRUCTOR.

	* g++.dg/ext/vector37.C: New test.

From-SVN: r272152
2019-06-11 15:01:40 +02:00
Marc Glisse
7ac9a20184 fold_real_zero_addition_p for vectors
2019-06-11  Marc Glisse  <marc.glisse@inria.fr>

	PR tree-optimization/62041
	* fold-const.c (fold_real_zero_addition_p): Handle vectors.

From-SVN: r272151
2019-06-11 12:48:26 +00:00
Jason Merrill
9281275764 gdbhooks.py (TreePrinter.to_string): Recognize ggc_free'd memory.
* gdbhooks.py (TreePrinter.to_string): Recognize ggc_free'd memory.

	* tree.c (get_tree_code_name): Likewise.
	* print-tree.c (print_node): Only briefly print a node with an
	invalid code.

From-SVN: r272150
2019-06-11 08:40:08 -04:00
Nick Clifton
de6abd8514 Import these changes from the binutils/gdb repository:
2019-05-28  Nick Alcock  <nick.alcock@oracle.com>

	* Makefile.def (dependencies): configure-libctf depends on all-bfd
	and all its deps.
	* Makefile.in: Regenerated.

	2019-05-28  Nick Alcock  <nick.alcock@oracle.com>

	* Makefile.def (host_modules): Add libctf.
	* Makefile.def (dependencies): Likewise.
	libctf depends on zlib, libiberty, and bfd.
	* Makefile.in: Regenerated.
	* configure.ac (host_libs): Add libctf.
	* configure: Regenerated.

From-SVN: r272148
2019-06-11 12:05:49 +00:00
Richard Biener
f75d370110 toir.cc (pop_label): Only queue labels in a vector.
2019-06-11  Richard Biener  <rguenthe@suse.de>

	d/90778
	* toir.cc (pop_label): Only queue labels in a vector.
	(cmp_labels): Label decl comparator.
	(pop_binding_level): Pop labels in DECL_UID order to avoid
	debug info differences.

From-SVN: r272146
2019-06-11 08:30:47 +00:00
Jakub Jelinek
9f95c526a9 re PR bootstrap/90819 (-Walloc-size-larger-than error in trans-mem.c)
PR bootstrap/90819
	* trans-mem.c (tm_memopt_compute_available): Add assertion
	that blocks is not empty.  Formatting fix.

From-SVN: r272145
2019-06-11 10:20:02 +02:00
Martin Liska
3f2cf03657 Disable htable sanitization in pt.c (PR c++/87847).
2019-06-11  Martin Liska  <mliska@suse.cz>

	PR c++/87847
	* hash-table.h: Extend create_gcc, add one parameter
	that is passed into hash_table::hash_table.
2019-06-11  Martin Liska  <mliska@suse.cz>

	PR c++/87847
	* pt.c (init_template_processing): Disable hash table
	sanitization for decl_specializations and type_specializations.

From-SVN: r272144
2019-06-11 07:55:19 +00:00
Jakub Jelinek
0d7b3e477b * libgcov-merge.c (__gcov_merge_single): Revert previous change.
From-SVN: r272143
2019-06-11 09:54:17 +02:00
GCC Administrator
c36d06eb92 Daily bump.
From-SVN: r272141
2019-06-11 00:16:16 +00:00
Uros Bizjak
4f59794ba6 * config/i386/i386.md (absneg fp_reg splitter): Fix operator mode.
From-SVN: r272134
2019-06-10 23:51:42 +02:00
Ian Lance Taylor
e898243c23 compiler: support inlining functions that use index expressions
Also move the determine_types pass on an inlined function body to one
    place, rather than doing it ad hoc as needed.
    
    This adds 79 new inlinable functions in the standard library, such as
    bytes.HasPrefix and bytes.LastIndexByte.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181261

From-SVN: r272133
2019-06-10 21:34:12 +00:00
Ian Lance Taylor
35c19de696 compiler: make heap expression's write barrier conditional
Heap_expression::do_get_backend emits an unconditional write
    barrier if the type has pointers and it is not a stack allocation.
    This CL changes it to use a write barrier for the assignment only
    when write barriers are enabled. While here, also change it to
    call gcWriteBarrier instead of typedmemmove for pointer-shaped
    types.
    
    For this to work, Function::build needs to be adjusted so that
    Heap_expression::do_get_backend is called when there is a parent
    block.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181540

From-SVN: r272132
2019-06-10 21:08:42 +00:00
Ian Lance Taylor
fc917b4265 compiler: permit inlining functions with labels and goto statements
This permits inlining functions with for loops and some switches, as
    they are lowered to if and goto statements before exporting them.
    
    This by itself only adds three new inlinable functions in the standard
    library: sort.Search, context.(*emptyCtx).String, and
    cmd/go/internal/work.(*Builder).disableBuildID.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181197

From-SVN: r272131
2019-06-10 21:02:20 +00:00
Ian Lance Taylor
d480455f2d compiler: use gcWriteBarrier for pointer-shaped struct/array
If a struct/array is pointer-shaped (i.e. having a single field
    that is pointer-shaped), we can use gcWriteBarrier instead of
    typedmemmove for the write barrier.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181539

From-SVN: r272130
2019-06-10 20:35:14 +00:00
Matthew Beliveau
fa237d91e8 re PR c++/87250 (Internal compiler error with -Os -fsyntax-only)
PR c++/87250
	* g++.dg/cpp0x/pr87250.C: New test.

From-SVN: r272129
2019-06-10 20:35:00 +00:00
Jason Merrill
620adbec08 constexpr.c (free_constructor): New.
* constexpr.c (free_constructor): New.

	(cxx_eval_call_expression): Free parameter value CONSTRUCTORs.

From-SVN: r272127
2019-06-10 15:32:34 -04:00
Jason Merrill
9b9eb42a41 Reduce unsharing in constexpr call evaluation.
* constexpr.c (unshare_constructor): Only unshare if T is itself a
	CONSTRUCTOR.
	(cxx_eval_call_expression): Don't call it on the result here.

From-SVN: r272126
2019-06-10 15:32:30 -04:00
Jason Merrill
3c961dc755 Reduce constexpr_call memory consumption.
* constexpr.c (cxx_bind_parameters_in_call): Use TREE_VEC rather
	than TREE_LIST.
	(constexpr_call_hasher::equal, cxx_bind_parameters_in_call)
	(cxx_eval_call_expression): Adjust.

From-SVN: r272125
2019-06-10 15:31:49 -04:00
Ian Lance Taylor
c2f879e1fe compiler: make escape analysis work with imported inlineable functions
The escape analysis was written before we import inlineable
    function bodies, and in some places it skipped functions that are
    not in the local package. Now that there are imported function
    bodies, make the escape analysis work with them.
    
    Note that it is necessary for the escape analysis to run on
    imported function bodies, even if they are already tagged. The
    tags only have the information of the parameters (receiver,
    results), but not the internal nodes, e.g. local variables. We
    still need to do the analysis to get all the information. (In the
    future maybe we could export/import escape info for internal
    nodes also, then we don't need to redo the analysis.)
    
    Also add assertions to ensure that if we analyze the same
    function in multiple places, they'd better agree with each other.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181537

From-SVN: r272124
2019-06-10 19:30:21 +00:00
Uros Bizjak
f359611b36 i386-protos.h (ix86_split_fp_absneg_operator): New prototype.
* config/i386/i386-protos.h (ix86_split_fp_absneg_operator):
	New prototype.
	* config/i386/i386-expand.c (ix86_expand_fp_absneg_operator):
	Emit clobber also for non-sse operations.
	(ix86_split_fp_absneg_operator): New function.
	* config/i386/i386.md (SSEMODEF): New mode iterator.
	(ssevecmodef): New mode attribute.
	(<code>tf2): Use absneg code iterator.
	(*<code>tf2_1): Rename from *absnegtf3_sse. Use absneg code iterator.
	Add three-operand AVX alternatives.
	(*<code><mode>2_i387_1): Rename from *absnegxf2_i387.
	Use absneg code iterator and X87MODEF mode iterator.
	(absneg fp_reg non-sse splitter): Call absneg code iterator
	and X87MODEF mode iterator.
	(absneg general_reg non-sse splitter): Use absneg code iterator
	and X87MODEF mode iterator.  Use ix86_split_fp_absneg_operator.
	(*<code><mode>2_1): Rename from *absneg<mode>2.  Use absneg
	code iterator.  Add three-operand AVX alternative.
	(absneg sse_reg splitter): Use absneg code iterator
	and SSEMODEF mode iterator.  Handle AVX operands.
	(absneg fp_reg splitter): Use absneg code iterator
	and MODEF mode iterator.
	(absneg general_reg splitter): Merge splitters using MODEF mode
	iterator.  Use absneg code iterator.  Call
	ix86_split_fp_absneg_operator.
	(*<code><mode>2_i387): Rename from *<code><mode>2_1.
	Do not enable for non-sse modes before reload.
	(CSGNMODE): Remove.
	(CSGNVMODE): Ditto.
	(copysing<mode>3): Use SSEMODEF instead of CSGNMODE and
	ssevecmodef mode attribute instaed of CSGNVMODE.
	(copysign<mode>3_const): Ditto.
	(copysign<mode>3_var): Ditto.
	* config/i386/i386.md (*<code><mode>2): Rename from *absneg<mode>2.
	Use absneg code iterator.  Simplify code using std::swap.
	* config/i386/predicates.md (absneg_operator): Remove.

From-SVN: r272123
2019-06-10 21:17:57 +02:00
Jakub Jelinek
f2ee751da8 re PR testsuite/90772 (g++.dg/cpp1y/feat-cxx14.C and several others fails starting with r272011)
PR testsuite/90772
	* g++.dg/cpp1y/feat-cxx14.C: Use std::size_t instead of size_t.
	* g++.dg/cpp1z/feat-cxx1z.C: Likewise.
	* g++.dg/cpp2a/feat-cxx2a.C: Likewise.
	* g++.dg/cpp1z/pr85569.C: Include <functional>.
	* g++.dg/tree-ssa/pr80293.C: Include <cstdint>.
	* g++.dg/tree-ssa/pr69336.C: Include <stdexcept>.

From-SVN: r272122
2019-06-10 18:18:52 +02:00
Jonathan Wakely
39d1184ba8 PR other/90695 reduce testcase to remove library dependency
This reproduces the original ICE fixed by r178857 (tested at r178852 and
r178860), without depending on a libstdc++ header that keeps changing.

The number of errors differs between C++14 and C++17 modes, so the fixed
test uses dg-excess-errors to match any number of them. The precise
errors aren't what's being tested for here anyway, the point of the test
is to verify the ICE in PR 50391 is fixed.

	PR other/90695
	* g++.dg/cpp0x/noexcept15.C: Remove dependency on library header.

From-SVN: r272121
2019-06-10 16:55:36 +01:00