aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2018-07-25[ARC] Fix uncache attribute.Claudiu Zissulescu5-14/+58
gcc/ 2018-05-09 Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc.c (compact_memory_operand_p): Check for uncached accesses as well. (arc_is_uncached_mem_p): uncached applies to both the variable and the pointer. testsuite/ 2018-05-09 Claudiu Zissulescu <claziss@synopsys.com> * gcc.target/arc/uncached-1.c: New test. * gcc.target/arc/uncached-2.c: Likewise. From-SVN: r262970
2018-07-25[ARC] Add more additional register namesClaudiu Zissulescu2-1/+14
gcc/ Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc.h (ADDITIONAL_REGISTER_NAMES): Add additional register names. From-SVN: r262969
2018-07-25optinfo-emit-json.cc: fix trivial memory leakDavid Malcolm2-1/+6
gcc/ChangeLog: * optinfo-emit-json.cc (class optrecord_json_writer): Convert field "m_scopes" from vec to auto_vec. From-SVN: r262967
2018-07-25Fix wrong declaration.Martin Liska2-1/+6
2018-07-25 Martin Liska <mliska@suse.cz> * config/powerpcspe/powerpcspe-protos.h (rs6000_loop_align): Fix return type. From-SVN: r262966
2018-07-25re PR lto/86654 (ICE in gen_member_die, at dwarf2out.c:24933)Richard Biener2-2/+13
2018-07-25 Richard Biener <rguenther@suse.de> PR debug/86654 * dwarf2out.c (dwarf2out_decl): Do not handle nested functions special wrt context_die late. (gen_subprogram_die): Re-use DIEs in local scope. From-SVN: r262965
2018-07-25Add new src/c++17 directory to list in acinclude.m4Jonathan Wakely4-3/+7
* acinclude.m4 (glibcxx_SUBDIRS): Add src/c++17. * src/Makefile.am: Add comment. * src/c++17/Makefile.in: Regenerate. From-SVN: r262964
2018-07-25Move std::unique_lock definition to a separate headerJonathan Wakely7-195/+268
This will allow std::mutex and std::lock_guard to be used elsewhere in the library without pulling in the whole of <chrono>. Previously the whole of <bits/std_mutex.h> was conditional on the _GLIBCXX_USE_C99_STDINT_TR1 macro, but only the std::unique_lock members that use <chrono> facilities should depend on that. std::mutex only needs to depend on _GLIBCXX_HAS_GTHREADS and std::lock_guard can be defined unconditionally. Some parts of <bits/std_mutex.h> and <mutex> are based on code in <ext/concurrence.h> which dates from 2003. However, the std::unique_lock implementation was added in 2008 by r135007, without using any earlier code. Therefore the new header file has copyright years 2008-2018. * include/Makefile.am: Add new <bits/unique_lock.h> header. * include/Makefile.in: Regenerate. * include/bits/std_mutex.h [!_GLIBCXX_USE_C99_STDINT_TR1] (mutex) (lock_guard): Define independent of _GLIBCXX_USE_C99_STDINT_TR1. (unique_lock): Move definition to ... * include/bits/unique_lock.h: New header. [!_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock): Define unconditionally. [_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock(mutex_type&, time_point)) (unique_lock(mutex_type&, duration), unique_lock::try_lock_until) (unique_lock::try_lock_for): Define only when <chrono> is usable. * include/std/condition_variable: Include <bits/unique_lock.h>. * include/std/mutex: Likewise. From-SVN: r262963
2018-07-25Add PR numberRichard Sandiford1-0/+1
From-SVN: r262962
2018-07-25Fix ceil_log2(0) (PR 86644)Richard Sandiford2-2/+6
This PR shows a pathological case in which we try SLP vectorisation on dead code. We record that 0 bits of the result are enough to satisfy all users (which is true), and that led to precision being 0 in: static unsigned int vect_element_precision (unsigned int precision) { precision = 1 << ceil_log2 (precision); return MAX (precision, BITS_PER_UNIT); } ceil_log2 (0) returned 64 rather than 0, leading to 1 << 64, which is UB. 2018-07-25 Richard Sandiford <richard.sandiford@arm.com> gcc/ * hwint.c (ceil_log2): Fix comment. Return 0 for 0. From-SVN: r262961
2018-07-25Limit dump_flag enum values range (PR middle-end/86645).Martin Liska3-4/+14
2018-07-25 Martin Liska <mliska@suse.cz> PR middle-end/86645 * dumpfile.c: And excluded values with TDF_ALL_VALUES. * dumpfile.h (enum dump_flag): Defince TDF_ALL_VALUES. From-SVN: r262960
2018-07-25Explain asan parameters in params.def (PR sanitizer/79635).Martin Liska2-0/+8
2018-07-25 Martin Liska <mliska@suse.cz> PR sanitizer/79635 * params.def: Explain ASan abbreviation and provide a documentation link. From-SVN: r262959
2018-07-24PR tree-optimization/86622 - incorrect strlen of array of array plus ↵Martin Sebor8-47/+668
variable offset PR tree-optimization/86622 - incorrect strlen of array of array plus variable offset PR tree-optimization/86532 - Wrong code due to a wrong strlen folding starting with r262522 gcc/ChangeLog: PR tree-optimization/86622 PR tree-optimization/86532 * builtins.h (string_length): Declare. * builtins.c (c_strlen): Correct handling of non-constant offsets. (check_access): Be prepared for non-constant length ranges. (string_length): Make extern. * expr.c (string_constant): Only handle the minor non-constant array index. Use string_constant to compute the length of a generic string constant. gcc/testsuite/ChangeLog: PR tree-optimization/86622 PR tree-optimization/86532 * gcc.c-torture/execute/strlen-2.c: New test. * gcc.c-torture/execute/strlen-3.c: New test. * gcc.c-torture/execute/strlen-4.c: New test. From-SVN: r262958
2018-07-25Daily bump.GCC Administrator1-1/+1
From-SVN: r262957
2018-07-24Add initial version of C++17 <memory_resource> headerJonathan Wakely24-16/+2584
This is missing the synchronized_pool_resource and unsynchronized_pool_resource classes but is otherwise complete. This is a new implementation, not based on the existing code in <experimental/memory_resource>, but memory_resource and polymorphic_allocator ended up looking almost the same anyway. The constant_init kluge in src/c++17/memory_resource.cc is apparently due to Richard Smith and ensures that the objects are constructed during constant initialiation phase and not destroyed (because the constant_init destructor doesn't destroy the union member and the storage is not reused). * config/abi/pre/gnu.ver: Export new symbols. * configure: Regenerate. * include/Makefile.am: Add new <memory_resource> header. * include/Makefile.in: Regenerate. * include/precompiled/stdc++.h: Include <memory_resource> for C++17. * include/std/memory_resource: New header. (memory_resource, polymorphic_allocator, new_delete_resource) (null_memory_resource, set_default_resource, get_default_resource) (pool_options, monotonic_buffer_resource): Define. * src/Makefile.am: Add c++17 directory. * src/Makefile.in: Regenerate. * src/c++11/Makefile.am: Fix comment. * src/c++17/Makefile.am: Add makefile for new sub-directory. * src/c++17/Makefile.in: Generate. * src/c++17/memory_resource.cc: New. (newdel_res_t, null_res_t, constant_init, newdel_res, null_res) (default_res, new_delete_resource, null_memory_resource) (set_default_resource, get_default_resource): Define. * testsuite/20_util/memory_resource/1.cc: New test. * testsuite/20_util/memory_resource/2.cc: New test. * testsuite/20_util/monotonic_buffer_resource/1.cc: New test. * testsuite/20_util/monotonic_buffer_resource/allocate.cc: New test. * testsuite/20_util/monotonic_buffer_resource/deallocate.cc: New test. * testsuite/20_util/monotonic_buffer_resource/release.cc: New test. * testsuite/20_util/monotonic_buffer_resource/upstream_resource.cc: New test. * testsuite/20_util/polymorphic_allocator/1.cc: New test. * testsuite/20_util/polymorphic_allocator/resource.cc: New test. * testsuite/20_util/polymorphic_allocator/select.cc: New test. * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource): Define concrete memory resource for testing. (__gnu_test::default_resource_mgr): Define RAII helper for changing default resource. From-SVN: r262953
2018-07-24PR libstdc++/86658 fix __niter_wrap to not copy invalid iteratorsJonathan Wakely3-1/+42
An output iterator passed as the unused first argument to __niter_wrap might have already been invalidated, so don't copy it. PR libstdc++/86658 * include/bits/stl_algobase.h (__niter_wrap<_Iterator>): Pass unused parameter by reference, to avoid copying invalid iterators. * testsuite/25_algorithms/copy/86658.cc: New test. From-SVN: r262952
2018-07-24Avoid &LOOP_VINFO_MASKS for bb vectorisation (PR 86618)Richard Sandiford2-1/+7
r262589 introduced another instance of the bug fixed in r258131. 2018-07-23 Richard Sandiford <richard.sandiford@arm.com> gcc/ PR tree-optimization/86618 * tree-vect-stmts.c (vectorizable_call): Don't take the address of LOOP_VINFO_MASKS (loop_vinfo) when loop_vinfo is null. From-SVN: r262951
2018-07-24Fix segfault in -fsave-optimization-record (PR tree-optimization/86636)David Malcolm6-13/+73
There are various ways that it's possible for a gimple statement to have an UNKNOWN_LOCATION, and for that UNKNOWN_LOCATION to be wrapped in an ad-hoc location to capture inlining information. For such a location, LOCATION_FILE (loc) is NULL. Various places in -fsave-optimization-record were checking for loc != UNKNOWN_LOCATION and were passing LOCATION_FILE (loc) to code that assumed a non-NULL filename, thus leading to segfaults for the above cases. This patch updates the tests to use LOCATION_LOCUS (loc) != UNKNOWN_LOCATION instead, to look through ad-hoc location wrappers, fixing the segfaults. It also adds various assertions to the affected code. gcc/ChangeLog: PR tree-optimization/86636 * json.cc (json::object::set): Fix comment. Add assertions. (json::array::append): Move here from json.h. Add comment and an assertion. (json::string::string): Likewise. * json.h (json::array::append): Move to json.cc. (json::string::string): Likewise. * optinfo-emit-json.cc (optrecord_json_writer::impl_location_to_json): Assert that we aren't attempting to write out UNKNOWN_LOCATION, or an ad-hoc wrapper around it. Expand the location once, rather than three times. (optrecord_json_writer::inlining_chain_to_json): Fix the check for UNKNOWN_LOCATION, to use LOCATION_LOCUS to look through ad-hoc wrappers. (optrecord_json_writer::optinfo_to_json): Likewise, in four places. Fix some overlong lines. gcc/testsuite/ChangeLog: PR tree-optimization/86636 * gcc.c-torture/compile/pr86636.c: New test. From-SVN: r262950
2018-07-24[GCC][AARCH64] Canonicalize aarch64 widening simd plus insnsMatthew Malcomson4-22/+124
Committed on behalf of matthew.malcomson@arm.com 2018-07-24 Matthew Malcomson <matthew.malcomson@arm.com> * config/aarch64/aarch64-simd.md (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w<mode>): Split into... (aarch64_<ANY_EXTEND:su>subw<mode>): ... This... (aarch64_<ANY_EXTEND:su>addw<mode>): ... And this. (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w<mode>_internal): Split into... (aarch64_<ANY_EXTEND:su>subw<mode>_internal): ... This... (aarch64_<ANY_EXTEND:su>addw<mode>_internal): ... And this. (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>_internal): Split into... (aarch64_<ANY_EXTEND:su>subw2<mode>_internal): ... This... (aarch64_<ANY_EXTEND:su>addw2<mode>_internal): ... And this. * gcc.target/aarch64/vect-su-add-sub.c: New. From-SVN: r262949
2018-07-24re PR middle-end/86627 (Signed 128-bit division by 2 no longer expanded to RTL)Jakub Jelinek4-3/+44
PR middle-end/86627 * expmed.c (expand_divmod): Punt if d == HOST_WIDE_INT_MIN and size > HOST_BITS_PER_WIDE_INT. For size > HOST_BITS_PER_WIDE_INT and abs_d == d, do the power of two handling if profitable. * gcc.target/i386/pr86627.c: New test. From-SVN: r262948
2018-07-24Minor refactoring in <bit> headerJonathan Wakely2-45/+48
* include/std/bit (__countl_zero, __countr_zero, __popcount): Use local variables for number of digits instead of type aliases. (__log2p1): Remove redundant branch also checked in __countl_zero. From-SVN: r262947
2018-07-24match.pd: Add BIT_FIELD_REF canonicalizations.Richard Biener2-0/+17
2018-07-24 Richard Biener <rguenther@suse.de> * match.pd: Add BIT_FIELD_REF canonicalizations. From-SVN: r262946
2018-07-24Reorder conditions in uses-allocator construction helperJonathan Wakely5-4/+18
The erased_type condition is only true for code using the Library Fundamentals TS, so assume it's less common and only check it after checking for convertibility. This does mean for types using erased_type the more expensive convertibility check is done first, but such types are rare. * include/bits/uses_allocator.h (__is_erased_or_convertible): Reorder conditions. Add comments. * testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error line. * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise. * testsuite/20_util/scoped_allocator/69293_neg.cc: Likewise. From-SVN: r262945
2018-07-24Make __resource_adaptor_imp usable with C++17 memory_resourceJonathan Wakely2-55/+81
By making the memory_resource base class a template parameter the __resource_adaptor_imp can be used to adapt an allocator into a std::pmr::memory_resource instead of experimental::pmr::memory_resource. * include/experimental/memory_resource: Adjust comments and whitespace. (__resource_adaptor_imp): Add second template parameter for type of memory resource base class. (memory_resource): Define default constructor, destructor, copy constructor and copy assignment operator as defaulted. From-SVN: r262944
2018-07-24PR libstdc++/70966 fix lifetime bug for default resourceJonathan Wakely2-6/+16
PR libstdc++/70966 * include/experimental/memory_resource (__get_default_resource): Use placement new to create an object with dynamic storage duration. From-SVN: r262943
2018-07-24re PR testsuite/86649 (g++.dg/tree-ssa/pr19476-1.C fails starting with r262928)Jakub Jelinek7-61/+99
PR testsuite/86649 * g++.dg/tree-ssa-/pr19476-1.C: Check dom2 dump instead of ccp1. * g++.dg/tree-ssa-/pr19476-5.C: Likewise. * g++.dg/tree-ssa-/pr19476-6.C: New test. * g++.dg/tree-ssa-/pr19476-7.C: New test. From-SVN: r262942
2018-07-24Daily bump.GCC Administrator1-1/+1
From-SVN: r262940
2018-07-23inclhack.def (aix_unistd): New.David Edelsohn4-5/+73
* inclhack.def (aix_unistd): New. * fixincl.x: Regenerate. * tests/base/unistd.h [AIX_UNISTD_CHECK]: New test. From-SVN: r262936
2018-07-23PR libstdc++/70940 optimize pmr::resource_adaptor for allocators using mallocJonathan Wakely3-20/+94
pmr::resource_adaptor can avoid allocating an oversized buffer and doing manual alignment within that buffer when the wrapped allocator is known to always meet the requested alignment. Specifically, if the allocator is known to use malloc or new directly, then we can call the allocator directly for any fundamental alignment. PR libstdc++/70940 * include/experimental/memory_resource (__resource_adaptor_common::_AlignMgr::_M_unadjust): Add assertion. (__resource_adaptor_common::__guaranteed_alignment): New helper to give maximum alignment an allocator guarantees. Specialize for known allocators using new and malloc. (__resource_adaptor_imp::do_allocate): Use __guaranteed_alignment. (__resource_adaptor_imp::do_deallocate): Likewise. * testsuite/experimental/memory_resource/new_delete_resource.cc: Check that new and delete are called with expected sizes. From-SVN: r262935
2018-07-23re PR target/86591 (gcc.target/powerpc/builtins-1.c fails starting with r261904)Carl Love4-63/+70
gcc/testsuite/ChangeLog: 2018-07-23 Carl Love <cel@us.ibm.com> PR 86591 * gcc.target/powerpc/altivec-1-runnable.c: Move vector double tests to file altivec-2-runnable.c. * gcc.target/powerpc/altivec-2-runnable.c: Add vector double tests. * gcc.target/powerpc/buitlins-1.c: Remove dg-final check for xxlor. Update dg-final test for __divdi3 and __udivdi3 instructions. Update comments for instruction generated by vec_mergeh, vec_perm, vec_round, vec_cts, vec_ctu, vec_cpsgn tests. From-SVN: r262934
2018-07-23re PR c/86617 (Volatile qualifier is ignored sometimes for unsigned char)Bernd Edlinger4-4/+27
gcc: 2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de> PR c/86617 * genmatch.c (dt_operand::gen_match_op): Avoid folding volatile values. testsuite: 2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de> PR c/86617 * gcc.dg/pr86617.c: New test. From-SVN: r262933
2018-07-23gimple-fold.c (gimple_fold_builtin_printf): Don't create a not NUL ↵Bernd Edlinger2-13/+8
terminated STRING_CST object. 2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de> * gimple-fold.c (gimple_fold_builtin_printf): Don't create a not NUL terminated STRING_CST object. From-SVN: r262932
2018-07-232018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de>Bernd Edlinger2-1/+5
hsa-dump.c (dump_hsa_symbol): Avoid out of scope access to buf. From-SVN: r262931
2018-07-23rs6000: Improve vsx_init_v4siSegher Boessenkool5-109/+45
This changes vsx_init_v4si to be an expander. That way, no special cases are needed anymore for special arguments: the normal RTL passes can deal with it. * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Adjust. * config/rs6000/rs6000-protos.h (rs6000_split_v4si_init): Delete. * config/rs6000/rs6000.c (rs6000_expand_vector_init): Always force the elements into a register. (rs6000_split_v4si_init_di_reg): Delete. (rs6000_split_v4si_init): Delete. * config/rs6000/vsx.md (unspec): Delete UNSPEC_VSX_VEC_INIT. (vsx_init_v4si): Rewrite as a define_expand. From-SVN: r262930
2018-07-23rs6000: Generate rl*imi for memory some moreSegher Boessenkool2-1/+47
An rl<wd>imi instruction is often written like "(a << 8) | (b & 255)". If "b" now is a byte in memory, combine will combine the load with the masking (with 255 in the example), since that is a single instruction; and then the rl*imi isn't combined from the remaining pieces. This patch adds a splitter to make combine handle this case. * config/rs6000/rs6000.md (splitters for rldimi and rlwimi with the zero_extend argument from memory): New. From-SVN: r262929
2018-07-23re PR c++/86569 (-Wnonnull-compare affects code generation since r233684)Jakub Jelinek4-5/+33
PR c++/86569 * cp-gimplify.c (cp_fold): Don't fold comparisons into other kind of expressions other than INTEGER_CST regardless of TREE_NO_WARNING or warn_nonnull_compare. * g++.dg/warn/Wnonnull-compare-9.C: New test. From-SVN: r262928
2018-07-23Daily bump.GCC Administrator1-1/+1
From-SVN: r262927
2018-07-22PR bootstrap/86621 - 'alloca' bound is unknown in tree-vect-slp.c:1437:16 Martin Sebor2-1/+16
gcc/ChangeLog: * gcc/gimple-ssa-warn-alloca.c (alloca_call_type_by_arg): Avoid diagnosing calls with unknown arguments unless -Walloca-larger-than is restricted to less than PTRDIFF_MAX bytes. From-SVN: r262923
2018-07-22* doc/gcov.texi (Invoking Gcov): Editorial changes.Gerald Pfeifer2-3/+7
From-SVN: r262922
2018-07-22Daily bump.GCC Administrator1-1/+1
From-SVN: r262921
2018-07-21Daily bump.GCC Administrator1-1/+1
From-SVN: r262917
2018-07-20libcpp: remove redundant parameter from rich_location::set_rangeDavid Malcolm7-7/+23
gcc/c-family/ChangeLog: * c-common.c (c_cpp_error): Remove redundant "line_table" parameter from call to rich_location::set_range. (maybe_suggest_missing_token_insertion): Likewise. gcc/ChangeLog: * pretty-print.c (text_info::set_location): Remove redundant "line_table" parameter from call to rich_location::set_range. libcpp/ChangeLog: * include/line-map.h (rich_location::set_range): Remove redundant line_maps * parameter. * line-map.c (rich_location::set_range): Likewise. From-SVN: r262913
2018-07-20PR middle-end/82063 - issues with arguments enabled by -WallMartin Sebor2-1/+6
gcc/c-family/ChangeLog: * gcc/c-family/c.opt (-Warray-bounds): Remove redundant -Wall. From-SVN: r262912
2018-07-20re PR middle-end/82063 (issues with arguments enabled by -Wall)Martin Sebor2-2/+3
PR middle-end/82063 gcc/testsuite/ChangeLog: * gcc/testsuite/c-c++-common/pr68833-1.c: Adjust. From-SVN: r262911
2018-07-20PR middle-end/82063 - issues with arguments enabled by -WallMartin Sebor48-377/+862
gcc/ada/ChangeLog: PR middle-end/82063 * gcc-interface/misc.c (gnat_handle_option): Change function argument to HOST_WIDE_INT. gcc/brig/ChangeLog: PR middle-end/82063 * brig/brig-lang.c (brig_langhook_handle_option): Change function argument to HOST_WIDE_INT. gcc/c-family/ChangeLog: PR middle-end/82063 * c-common.h (c_common_handle_option): Change function argument to HOST_WIDE_INT. * c-opts.c (c_common_init_options): Same. (c_common_handle_option): Same. Remove special handling of OPT_Walloca_larger_than_ and OPT_Wvla_larger_than_. * c.opt (-Walloc-size-larger-than, -Walloca-larger-than): Change options to take a HOST_WIDE_INT argument and accept a byte-size suffix. Initialize. (-Wvla-larger-than): Same. (-Wno-alloc-size-larger-than, -Wno-alloca-larger-than): New. (-Wno-vla-larger-than): Same. gcc/fortran/ChangeLog: PR middle-end/82063 * gfortran.h (gfc_handle_option): Change function argument to HOST_WIDE_INT. * options.c (gfc_handle_option): Same. gcc/go/ChangeLog: PR middle-end/82063 * go-lang.c (go_langhook_handle_option): Change function argument to HOST_WIDE_INT. gcc/lto/ChangeLog: PR middle-end/82063 * lto-lang.c (lto_handle_option): Change function argument to HOST_WIDE_INT. gcc/testsuite/ChangeLog: PR middle-end/82063 * gcc/testsuite/c-c++-common/pr68657-1.c: Adjust. * gcc/testsuite/c-c++-common/pr68657-2.c: Same. * gcc/testsuite/c-c++-common/pr68657-3.c: Same. * gcc.dg/Walloc-size-larger-than-16.c: Same. * gcc.dg/Walloca-larger-than.c: New test. * gcc.dg/Walloca-larger-than-2.c: New test. * gcc.dg/Wframe-larger-than-2.c: New test. * gcc.dg/Wlarger-than3.c: New test. * gcc.dg/Wvla-larger-than-3.c: New test. * gcc.dg/pr42611.c: Adjust. * gnat.dg/frame_overflow.adb: Same. gcc/ChangeLog: PR middle-end/82063 * builtins.c (expand_builtin_alloca): Adjust. * calls.c (alloc_max_size): Simplify. * cgraphunit.c (cgraph_node::expand): Adjust. * common.opt (larger_than_size, warn_frame_larger_than): Remove variables. (frame_larger_than_size): Same. (-Wframe-larger-than, -Wlarger-than, -Wstack-usage): Change options to take a HOST_WIDE_INT argument and accept a byte-size suffix. Initialize. * doc/invoke.texi (GCC Command Options): Document option arguments. Explain byte-size arguments and suffixes. (-Wvla-larger-than, -Wno-alloc-size-larger-than): Update. (-Wno-alloca-larger-than, -Wno-vla-larger-than): Same. (-Wframe-larger-than, -Wlarger-than, -Wstack-usage): Same. * doc/options.texi (UInteger): Expand. (Host_Wide_Int, ByteSize): Document new properties. * final.c (final_start_function_1): Include sizes in an error message. * function.c (frame_offset_overflow): Same. * gimple-ssa-warn-alloca.c (pass_walloca::gate): Adjust. (alloca_call_type_by_arg): Change function argument to HOST_WIDE_INT. Diagnose unbounded alloca calls only for limits of less than PTRDIFF_MAX. (alloca_call_type): Adjust. Diagnose possibly out-of-bounds alloca calls and VLA size only for limits of less than PTRDIFF_MAX. Same for alloca(0). (pass_walloca::execute): Adjust. Diagnose alloca calls in loops only for limits of less than PTRDIFF_MAX. * langhooks-def.h (lhd_handle_option): Change function argument to HOST_WIDE_INT. * langhooks.c (lhd_handle_option): Same. * langhooks.h (handle_option): Same. * opt-functions.awk (switch_bit_fields): Handle Host_Wide_Int and ByteSize flags. (var_type, var_type_struct): Same. (var_set): Handle ByteSize flag. * optc-gen.awk: Add comments to output to ease debugging. Make use of HOST_WIDE_INT where appropriate. * opts-gen-save.awk: Use %lx to format unsigned long. * opth-gen.awk: Change function argument to HOST_WIDE_INT. * opts-common.c (integral_argument): Return HOST_WIDE_INT and add arguments. Parse bytes-size suffixes. (enum_arg_to_value): Change function argument to HOST_WIDE_INT. (enum_value_to_arg): Same. (decode_cmdline_option): Handle cl_host_wide_int. Adjust. (handle_option): Adjust. (generate_option): Change function argument to HOST_WIDE_INT. (cmdline_handle_error): Adjust. (read_cmdline_option): Change function argument to HOST_WIDE_INT. (set_option): Change function argument to HOST_WIDE_INT. (option_enabled): Handle cl_host_wide_int. (get_option_state): Handle CLVC_SIZE. (control_warning_option): Same. * opts.c (common_handle_option): Change function argument to HOST_WIDE_INT. Remove handling of OPT_Walloca_larger_than_ and OPT_Wvla_larger_than_. * opts.h (enum cl_var_type): Add an enumerator. * stor-layout.c (layout_decl): Print a more meaningful warning. * toplev.c (output_stack_usage): Adjust. From-SVN: r262910
2018-07-20gfortran.h (gfc_symbol): Add pointer to next derived type.Andrew Benson6-80/+90
2018-07-20 Andrew Benson <abenson@carnegiescience.edu> * gfortran.h (gfc_symbol): Add pointer to next derived type. (gfc_dt_list, gfc_get_dt_list): Remove. (gfc_namespace): Replace gfc_dt_list with gfc_symbol. * parse.c (resolve_all_program_units): Replace gfc_free_dt_list() with simple nullification of gfc_derived_types. * resolve.c (resolve_global_procedure): Replace gfc_dt_list with gfc_symbol. (add_dt_to_dt_list): Change derived type linked list insertion to utilize dt_next pointers in gfc_symbol. * symbol.c (gfc_new_symbol, gfc_free_dt_list, gfc_symbol_done2) (get_iso_c_binding_dt, generate_isocbinding_symbol): Remove gfc_free_dt_list as gfc_dt_list is obsoleted. Change derived type linked list search/insertion to utilize dt_next pointers in gfc_symbol. * trans-types.c (gfc_get_derived_type): Change derived type linked list search to utilize dt_next pointers in gfc_symbol. From-SVN: r262909
2018-07-20compiler: do order_evaluations before remove_shortcutsIan Lance Taylor3-208/+225
In remove_shortcuts, the shortcut expressions (&&, ||) are rewritten to if statements, which are lifted out before the statement containing the shortcut expression. If the containing statement has other (sub)expressions that should be evaluated before the shortcut expression, which has not been lifted out, this will result in wrong evaluation order. For example, F() + G(A() && B()), the evaluation order per spec is F, A, B (if A returns true), G. If we lift A() and B() out first, they will be called before F, which is wrong. To fix this, we split order_evaluations to two phases. The first phase, which runs before remove_shortcuts, skips shortcut expressions' components. So it won't lift out subexpressions that are evaluated conditionally. The shortcut expression itself is ordered, since it may have side effects. Then we run remove_shortcuts. At this point the subexpressions that should be evaluated before the shortcut expression are already lifted out. remove_shortcuts also runs the second phase of order_evaluations to order the components of shortcut expressions, which were skipped during the first phase. Reorder the code blocks of remove_shortcuts and order_evaluations, since remove_shortcuts now calls Order_eval. Fixes golang/go#26495. Reviewed-on: https://go-review.googlesource.com/125299 From-SVN: r262908
2018-07-20Give up the inlining expansion for strcmp/strncmp/memcmp on a target where ↵Qing Zhao2-13/+36
the... Give up the inlining expansion for strcmp/strncmp/memcmp on a target where the type of the call has same or narrower presicion than unsigned char. Change char to unsigned char for strcmp/strncmp when expand them to a sequence of byte comparisons. Due to C standard section 7.24.4: The sign of a nonzero value returned by the comparison functions memcmp, strcmp, and strncmp is determined by the sign of the difference between the values of the first pair of characters (both interpreted as unsigned char) that differ in the objects being compared. bootstraped and tested on both X86 and Aarch64. no regression. From-SVN: r262907
2018-07-20PR tree-optimization/86613 - missing -Warray-bounds on a wide string access ↵Martin Sebor4-7/+22
due to ccp folding PR tree-optimization/86613 - missing -Warray-bounds on a wide string access due to ccp folding PR tree-optimization/86611 - missing -Warray-bounds on a large negative index into a string in lp64 gcc/testsuite/ChangeLog: * gcc/testsuite/c-c++-common/Warray-bounds-2.c: Undefine macros and prune duplicate warnings. * gcc/testsuite/gcc.dg/Warray-bounds-31.c: Xfail test cases with data-model-dependencies. * gcc/testsuite/gcc.dg/Warray-bounds-32.c: Ditto. From-SVN: r262906
2018-07-20Add "-fsave-optimization-record"David Malcolm19-22/+1219
This patch implements a -fsave-optimization-record option, which leads to a JSON file being written out, recording the dump_* calls made (via the optinfo infrastructure). The patch includes a minimal version of the JSON patch I posted last year, with just enough support needed for optimization records (I removed all of the parser code, leaving just the code for building in-memory JSON trees and writing them to a pretty_printer). gcc/ChangeLog: * Makefile.in (OBJS): Add json.o and optinfo-emit-json.o. (CFLAGS-optinfo-emit-json.o): Define TARGET_NAME. * common.opt (fsave-optimization-record): New option. * coretypes.h (struct kv_pair): Move here from dumpfile.c. * doc/invoke.texi (-fsave-optimization-record): New option. * dumpfile.c: Include "optinfo-emit-json.h". (struct kv_pair): Move to coretypes.h. (optgroup_options): Make non-static. (dump_context::end_scope): Call optimization_records_maybe_pop_dump_scope. * dumpfile.h (optgroup_options): New decl. * json.cc: New file. * json.h: New file. * optinfo-emit-json.cc: New file. * optinfo-emit-json.h: New file. * optinfo.cc: Include "optinfo-emit-json.h". (optinfo::emit): Call optimization_records_maybe_record_optinfo. (optinfo_enabled_p): Check optimization_records_enabled_p. (optinfo_wants_inlining_info_p): Likewise. * optinfo.h: Update comment. * profile-count.c (profile_quality_as_string): New function. * profile-count.h (profile_quality_as_string): New decl. (profile_count::quality): New accessor. * selftest-run-tests.c (selftest::run_tests): Call json_cc_tests and optinfo_emit_json_cc_tests. * selftest.h (selftest::json_cc_tests): New decl. (selftest::optinfo_emit_json_cc_tests): New decl. * toplev.c: Include "optinfo-emit-json.h". (compile_file): Call optimization_records_finish. (do_compile): Call optimization_records_start. * tree-ssa-live.c: Include optinfo.h. (remove_unused_scope_block_p): Retain inlining information if optinfo_wants_inlining_info_p returns true. From-SVN: r262905
2018-07-20PR libstdc++/86595 add missing noexceptJonathan Wakely2-2/+13
PR libstdc++/86595 * include/bits/fs_dir.h (directory_entry::refresh(error_code&)): Add noexcept. From-SVN: r262904