aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2019-06-12Update last ChangeLog entry.Martin Sebor1-4/+5
From-SVN: r272200
2019-06-12PR middle-end/90676 - default GIMPLE dumps lack informationMartin Sebor13-115/+205
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-12PR tree-optimization/90662 - strlen of a string in a vla plus offset not foldedMartin Sebor6-17/+602
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[nvptx] Assert fork has at most one join in nvptx_find_parTom de Vries2-0/+6
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-12Improve static_assert messages for std::variantJonathan Wakely2-17/+22
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-12Simplify std::scoped_lock destructorJonathan Wakely2-5/+4
* include/std/mutex (scoped_lock::~scoped_lock()): Use fold expression. From-SVN: r272187
2019-06-12Replace std::to_string for integers with optimized versionJonathan Wakely9-75/+365
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-12Disable hash-table sanitization for mem stats maps.Martin Liska4-7/+18
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-12Remove value_range_constant_singleton in favor of value_range::singleton_p.Aldy Hernandez5-22/+18
From-SVN: r272182
2019-06-12re PR target/90811 ([nvptx] ptxas error on OpenMP offloaded code)Jakub Jelinek2-7/+25
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[arm] Implement usadv16qi and ssadv16qi standard namesPrzemyslaw Wirkus7-0/+101
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-12Remove wrong assert about single value profiler.Martin Liska2-1/+6
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-12re PR c/90760 (ICE on attributes section and alias in set_section, at ↵Jakub Jelinek4-1/+20
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-12Daily bump.GCC Administrator1-1/+1
From-SVN: r272177
2019-06-11removed extra .com, fixed e-mail.Matthew Beliveau1-1/+1
From-SVN: r272170
2019-06-11mips.c (mips_final_postscan_insn): Modify call to ↵Faraz Shahbazker5-6/+71
`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* MAINTAINERS (Write After Approval): Add myself.Matthew Beliveau2-0/+5
From-SVN: r272168
2019-06-11Darwin, testsuite - Fix PR 65364 (uninit-19.c).Iain Sandoe2-2/+8
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-11Do not enable -mpcrel by default at the current timeMichael Meissner8-22/+51
From-SVN: r272165
2019-06-11re PR target/90811 ([nvptx] ptxas error on OpenMP offloaded code)Jakub Jelinek4-1/+41
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-11Fix ConstexprIterator requirements tests - No constexpr algorithms!Edward Smith-Rowland3-2/+18
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-11Allow conversions in X/[ex]4 < Y/[ex]4Marc Glisse4-4/+38
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-11PR c++/90449 - add -Winaccessible-base option.Matthew Beliveau11-7/+96
* 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-11re PR c++/90801 (A recurring hang)Richard Biener2-11/+27
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-11re PR c++/90810 (Different intrinsics behavior on G++ 7.4 and G++ 8.3)Jakub Jelinek4-2/+45
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-11fold_real_zero_addition_p for vectorsMarc Glisse2-6/+16
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-11gdbhooks.py (TreePrinter.to_string): Recognize ggc_free'd memory.Jason Merrill4-8/+24
* 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-11Import these changes from the binutils/gdb repository:Nick Clifton5-8/+1341
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-11toir.cc (pop_label): Only queue labels in a vector.Richard Biener2-7/+30
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-11re PR bootstrap/90819 (-Walloc-size-larger-than error in trans-mem.c)Jakub Jelinek2-2/+8
PR bootstrap/90819 * trans-mem.c (tm_memopt_compute_available): Add assertion that blocks is not empty. Formatting fix. From-SVN: r272145
2019-06-11Disable htable sanitization in pt.c (PR c++/87847).Martin Liska4-4/+17
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* libgcov-merge.c (__gcov_merge_single): Revert previous change.Jakub Jelinek2-3/+6
From-SVN: r272143
2019-06-11Daily bump.GCC Administrator1-1/+1
From-SVN: r272141
2019-06-10* config/i386/i386.md (absneg fp_reg splitter): Fix operator mode.Uros Bizjak1-1/+1
From-SVN: r272134
2019-06-10compiler: support inlining functions that use index expressionsIan Lance Taylor6-11/+129
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-10compiler: make heap expression's write barrier conditionalIan Lance Taylor4-21/+53
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-10compiler: permit inlining functions with labels and goto statementsIan Lance Taylor7-25/+321
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-10compiler: use gcWriteBarrier for pointer-shaped struct/arrayIan Lance Taylor2-9/+16
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-10re PR c++/87250 (Internal compiler error with -Os -fsyntax-only)Matthew Beliveau2-0/+17
PR c++/87250 * g++.dg/cpp0x/pr87250.C: New test. From-SVN: r272129
2019-06-10constexpr.c (free_constructor): New.Jason Merrill2-2/+45
* constexpr.c (free_constructor): New. (cxx_eval_call_expression): Free parameter value CONSTRUCTORs. From-SVN: r272127
2019-06-10Reduce unsharing in constexpr call evaluation.Jason Merrill2-17/+26
* 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-10Reduce constexpr_call memory consumption.Jason Merrill2-37/+18
* 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-10compiler: make escape analysis work with imported inlineable functionsIan Lance Taylor3-14/+9
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-10i386-protos.h (ix86_split_fp_absneg_operator): New prototype.Uros Bizjak6-201/+262
* 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-10re PR testsuite/90772 (g++.dg/cpp1y/feat-cxx14.C and several others fails ↵Jakub Jelinek7-6/+19
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-10PR other/90695 reduce testcase to remove library dependencyJonathan Wakely2-2/+43
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-10gimple-fold.c (get_range_strlen): Update comment that didn't make it into ↵Martin Sebor2-24/+15
r267503 or related commits. gcc/ChangeLog: * gimple-fold.c (get_range_strlen): Update comment that didn't make it into r267503 or related commits. From-SVN: r272120
2019-06-10gcov-tool: Mark {merge,rewrite}_usage with noreturn attributeVladislav Ivanishin2-2/+7
2019-06-10 Vladislav Ivanishin <vlad@ispras.ru> * gcov-tool.c (merge_usage, rewrite_usage): Mark with ATTRIBUTE_NORETURN thus making consistent with overlap_usage. From-SVN: r272119
2019-06-10tree.def (OMP_SCAN): New tree code.Jakub Jelinek32-30/+957
* tree.def (OMP_SCAN): New tree code. * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_INCLUSIVE and OMP_CLAUSE_EXCLUSIVE. * tree.h (OMP_CLAUSES): Use OMP_SCAN instead of OMP_TASKGROUP. (OMP_SCAN_BODY, OMP_SCAN_CLAUSES): Define. * tree.c (omp_clause_num_ops, omp_clause_code_name): Add entries for OMP_CLAUSE_{IN,EX}CLUSIVE. (walk_tree_1): Handle OMP_CLAUSE_{IN,EX}CLUSIVE. * tree-nested.c (convert_nonlocal_reference_stmt, convert_local_reference_stmt, convert_gimple_call): Handle GIMPLE_OMP_SCAN. * tree-pretty-print.c (dump_omp_clause): Handle OMP_CLAUSE_{IN,EX}CLUSIVE. (dump_generic_node): Handle OMP_SCAN. * gimple.def (GIMPLE_OMP_SCAN): New gimple code. * gimple.h (gomp_scan): New type. (is_a_helper <gomp_scan *>::test, is_a_helper <const gomp_scan *>::test): New templates. (gimple_build_omp_scan): Declare. (gimple_omp_scan_clauses, gimple_omp_scan_clauses_ptr, gimple_omp_scan_set_clauses): New inline functions. (CASE_GIMPLE_OMP): Add case GIMPLE_OMP_SCAN:. * gimple.c (gimple_build_omp_scan): New function. (gimple_copy): Handle GIMPLE_OMP_SCAN. * gimple-walk.c (walk_gimple_op, walk_gimple_stmt): Likewise. * gimple-pretty-print.c (dump_gimple_omp_block): Don't handle GIMPLE_OMP_TASKGROUP. (dump_gimple_omp_scan): New function. (pp_gimple_stmt_1): Handle GIMPLE_OMP_SCAN. * gimple-low.c (lower_stmt): Handle GIMPLE_OMP_SCAN. * tree-inline.c (remap_gimple_stmt, estimate_num_insns): Likewise. * gimplify.c (enum gimplify_omp_var_data): Add GOVD_REDUCTION_INSCAN. (is_gimple_stmt): Handle OMP_SCAN. (gimplify_scan_omp_clauses): Reject inscan reductions on constructs other than OMP_FOR or OMP_SIMD. Handle OMP_CLAUSE_{IN,EX}CLUSIVE. (gimplify_adjust_omp_clauses): Diagnose inscan reductions not mentioned in nested #pragma omp scan. Handle OMP_CLAUSE_{IN,EX}CLUSIVE. (gimplify_expr): Handle OMP_SCAN. * omp-low.c (check_omp_nesting_restrictions): For parent context, look through GIMPLE_OMP_SCAN context. Allow #pragma omp scan in simd constructs. (scan_omp_1_stmt, lower_omp_1, diagnose_sb_1, diagnose_sb_2): Handle GIMPLE_OMP_SCAN. c-family/ * c-pragma.h (enum pragma_kind): Add PRAGMA_OMP_SCAN. * c-pragma.c (omp_pragmas_simd): Add #pragma omp scan. * c-omp.c (c_omp_split_clauses): Diagnose inscan reductions on combined/composite constructs where it is not allowed. Copy over OMP_CLAUSE_REDUCTION_INSCAN. c/ * c-parser.c (c_parser_pragma): Reject PRAGMA_OMP_SCAN. (c_parser_omp_clause_reduction): Don't sorry_at on inscan reductions. (c_parser_omp_scan_loop_body): New function. (c_parser_omp_for_loop): Call c_parser_omp_scan_loop_body if there are inscan reduction clauses. * c-typeck.c (c_finish_omp_clauses): Reject mixing inscan with non-inscan reductions on the same construct, or inscan reductions with ordered or schedule clauses, or inscan array reductions. cp/ * parser.c (cp_parser_omp_clause_reduction): Don't sorry_at on inscan reductions. (cp_parser_omp_scan_loop_body): New function. (cp_parser_omp_for_loop): Call cp_parser_omp_scan_loop_body if there are inscan reduction clauses. (cp_parser_pragma): Reject PRAGMA_OMP_SCAN. * semantics.c (finish_omp_clauses): Reject mixing inscan with non-inscan reductions on the same construct, or inscan reductions with ordered or schedule clauses, or inscan array reductions. * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_{IN,EX}CLUSIVE. (tsubst_expr): Handle OMP_SCAN. testsuite/ * c-c++-common/gomp/scan-1.c: New test. * c-c++-common/gomp/scan-2.c: New test. * c-c++-common/gomp/scan-3.c: New test. * c-c++-common/gomp/scan-4.c: New test. From-SVN: r272117
2019-06-10Update __gcov_* scanned function name in a test-case.Martin Liska2-1/+6
2019-06-10 Martin Liska <mliska@suse.cz> * gcc.dg/no_profile_instrument_function-attr-1.c: Fix function name. From-SVN: r272116