]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
7 years agoFixes to testcase for PR tree-optimization/86636
dmalcolm [Fri, 27 Jul 2018 16:57:01 +0000 (16:57 +0000)] 
Fixes to testcase for PR tree-optimization/86636

gcc/testsuite/ChangeLog:
PR tree-optimization/86636
* gcc.c-torture/compile/pr86636.c: Add dg-do compile.
Add dg-require-effective-target pthread.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263031 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoi386: Remove _Unwind_Frames_Increment
hjl [Fri, 27 Jul 2018 14:40:47 +0000 (14:40 +0000)] 
i386: Remove _Unwind_Frames_Increment

CET kernel has been changed to place a restore token on shadow stack for
signal handler to enhance security.  It is usually transparent to user
programs since kernel will pop the restore token when signal handler
returns.  But when an exception is thrown from a signal handler, now
we need to remove _Unwind_Frames_Increment to pop the the restore token
from shadow stack.  Otherwise, we get

FAIL: g++.dg/torture/pr85334.C   -O0  execution test
FAIL: g++.dg/torture/pr85334.C   -O1  execution test
FAIL: g++.dg/torture/pr85334.C   -O2  execution test
FAIL: g++.dg/torture/pr85334.C   -O3 -g  execution test
FAIL: g++.dg/torture/pr85334.C   -Os  execution test
FAIL: g++.dg/torture/pr85334.C   -O2 -flto -fno-use-linker-plugin -flto-partition=none  execution test

PR libgcc/85334
* config/i386/shadow-stack-unwind.h (_Unwind_Frames_Increment):
Removed.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263030 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDisable strcmp/strncmp/memcmp inlining when optimization
qinzhao [Fri, 27 Jul 2018 01:56:57 +0000 (01:56 +0000)] 
Disable strcmp/strncmp/memcmp inlining when optimization
level is lower than 2 or Os

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263028 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDaily bump.
gccadmin [Fri, 27 Jul 2018 00:16:26 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263027 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * 30_threads/condition_variable_any/cond.cc: New test.
mpolacek [Thu, 26 Jul 2018 21:23:12 +0000 (21:23 +0000)] 
* 30_threads/condition_variable_any/cond.cc: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263022 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR target/86612
pthaugen [Thu, 26 Jul 2018 20:41:25 +0000 (20:41 +0000)] 
PR target/86612
* gcc.target/powerpc/pr58673-2.c: Call strdup.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263020 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR tree-optimization/86043 - strlen after memcpy partially overwriting a string not...
msebor [Thu, 26 Jul 2018 16:45:43 +0000 (16:45 +0000)] 
PR tree-optimization/86043 - strlen after memcpy partially overwriting a string not optimized
PR tree-optimization/86042 - missing strlen optimization after second strcpy

gcc/ChangeLog:

PR tree-optimization/86043
PR tree-optimization/86042
* tree-ssa-strlen.c (handle_builtin_memcpy): Handle strict overlaps.
(get_string_cst_length): Rename...
(get_min_string_length): ...to this.  Add argument.
(handle_char_store): Extend to handle multi-character stores by
MEM_REF.
* tree.c (initializer_zerop): Use new argument.  Handle MEM_REF.
* tree.h (initializer_zerop): Add argument.

gcc/testsuite/ChangeLog:

PR tree-optimization/86043
PR tree-optimization/86042
* gcc/testsuite/gcc.dg/attr-nonstring-2.c: Xfail test cases due to
pr86688.
* gcc.dg/strlenopt-44.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263018 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * src/c++98/locale_init.cc: Fix #ifdef condition.
mpolacek [Thu, 26 Jul 2018 16:36:50 +0000 (16:36 +0000)] 
* src/c++98/locale_init.cc: Fix #ifdef condition.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263016 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR testsuite/86660
jakub [Thu, 26 Jul 2018 16:12:58 +0000 (16:12 +0000)] 
PR testsuite/86660
* testsuite/libgomp.c++/for-15.C (results): Include it in
omp declare target region.
(main): Use map (always, tofrom: results) instead of
map (tofrom: results).

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263011 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR middle-end/86660
jakub [Thu, 26 Jul 2018 16:12:02 +0000 (16:12 +0000)] 
PR middle-end/86660
* omp-low.c (scan_sharing_clauses): Don't ignore map clauses for
declare target to variables if they have always,{to,from,tofrom} map
kinds.

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263010 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agolibsanitizer: Mark REAL(swapcontext) with indirect_return attribute on x86
hjl [Thu, 26 Jul 2018 14:48:55 +0000 (14:48 +0000)] 
libsanitizer: Mark REAL(swapcontext) with indirect_return attribute on x86

Cherry-pick compiler-rt revision 337603:

When shadow stack from Intel CET is enabled, the first instruction of all
indirect branch targets must be a special instruction, ENDBR.

lib/asan/asan_interceptors.cc has

...
  int res = REAL(swapcontext)(oucp, ucp);
...

REAL(swapcontext) is a function pointer to swapcontext in libc.  Since
swapcontext may return via indirect branch on x86 when shadow stack is
enabled, as in this case,

int res = REAL(swapcontext)(oucp, ucp);
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^  This function may be
returned via an indirect branch.

Here compiler must insert ENDBR after call, like

call *bar(%rip)
endbr64

I opened an LLVM bug:

https://bugs.llvm.org/show_bug.cgi?id=38207

to add the indirect_return attribute so that it can be used to inform
compiler to insert ENDBR after REAL(swapcontext) call.  We mark
REAL(swapcontext) with the indirect_return attribute if it is available.

This fixed:

https://bugs.llvm.org/show_bug.cgi?id=38249

Reviewed By: eugenis

Differential Revision: https://reviews.llvm.org/D49608

PR target/86560
* asan/asan_interceptors.cc (swapcontext) Cherry-pick
compiler-rt revision 337603.
* sanitizer_common/sanitizer_internal_defs.h (__has_attribute):
Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263009 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd missing dg-require-cstdint directives to tests
redi [Thu, 26 Jul 2018 14:03:28 +0000 (14:03 +0000)] 
Add missing dg-require-cstdint directives to tests

* testsuite/18_support/aligned_alloc/aligned_alloc.cc: Add
dg-require-cstdint directive.
* testsuite/20_util/allocator/overaligned.cc: Likewise.
* testsuite/20_util/any/cons/aligned.cc: Likewise.
* testsuite/20_util/monotonic_buffer_resource/allocate.cc: Likewise.
* testsuite/20_util/monotonic_buffer_resource/deallocate.cc: Likewise.
* testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
Likewise.
* testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
* testsuite/23_containers/list/modifiers/insert/25288.cc: Likewise.
* testsuite/23_containers/set/allocator/move_assign.cc: Likewise.
* testsuite/25_algorithms/make_heap/complexity.cc: Likewise.
* testsuite/25_algorithms/pop_heap/complexity.cc: Require cstdint and
random_device effective-target.
* testsuite/25_algorithms/push_heap/complexity.cc: Likewise.
* testsuite/25_algorithms/sample/1.cc: Require cstdint.
* testsuite/25_algorithms/sample/2.cc: Likewise.
* testsuite/25_algorithms/sort_heap/complexity.cc: Require cstdint
and random_device.
* testsuite/26_numerics/headers/random/types_std_c++0x.cc: Require
cstdint.
* testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
Likewise.
* testsuite/26_numerics/random/discard_block_engine/requirements/
constexpr_data.cc: Likewise.
* testsuite/26_numerics/random/discard_block_engine/requirements/
constexpr_functions.cc: Likewise.
* testsuite/26_numerics/random/independent_bits_engine/requirements/
constexpr_functions.cc: Likewise.
* testsuite/26_numerics/random/linear_congruential_engine/requirements/
constexpr_data.cc: Likewise.
* testsuite/26_numerics/random/linear_congruential_engine/requirements/
constexpr_functions.cc: Likewise.
* testsuite/26_numerics/random/mersenne_twister_engine/requirements/
constexpr_data.cc: Likewise.
* testsuite/26_numerics/random/mersenne_twister_engine/requirements/
constexpr_functions.cc: Likewise.
* testsuite/26_numerics/random/pr60037-neg.cc: Likewise.
* testsuite/26_numerics/random/seed_seq/cons/65631.cc: Likewise.
* testsuite/26_numerics/random/shuffle_order_engine/requirements/
constexpr_data.cc: Add dg-require-cstdint directive.
* testsuite/26_numerics/random/shuffle_order_engine/requirements/
constexpr_functions.cc: Likewise.
* testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
constexpr_data.cc: Likewise.
* testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
constexpr_functions.cc: Likewise.
* testsuite/26_numerics/random/uniform_real_distribution/operators/
64351.cc: Likewise.
* testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Likewise.
* testsuite/experimental/algorithm/sample-2.cc: Likewise.
* testsuite/experimental/algorithm/sample.cc: Likewise.
* testsuite/experimental/algorithm/search.cc: Likewise.
* testsuite/experimental/algorithm/shuffle.cc: Likewise.
* testsuite/experimental/any/cons/aligned.cc: Likewise.
* testsuite/experimental/memory_resource/new_delete_resource.cc:
Likewise.
* testsuite/experimental/memory_resource/resource_adaptor.cc: Likewise.
* testsuite/experimental/random/randint.cc: Likewise.
* testsuite/experimental/source_location/1.cc: Likewise.
* testsuite/ext/bitmap_allocator/overaligned.cc: Likewise.
* testsuite/ext/malloc_allocator/overaligned.cc: Likewise.
* testsuite/ext/mt_allocator/overaligned.cc: Likewise.
* testsuite/ext/new_allocator/overaligned.cc: Likewise.
* testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise.
* testsuite/ext/pool_allocator/overaligned.cc: Likewise.
* testsuite/ext/throw_allocator/check_allocate_max_size.cc: Likewise.
* testsuite/ext/throw_allocator/check_deallocate_null.cc: Likewise.
* testsuite/ext/throw_allocator/check_delete.cc: Likewise.
* testsuite/ext/throw_allocator/check_new.cc: Likewise.
* testsuite/ext/throw_allocator/deallocate_global.cc: Likewise.
* testsuite/ext/throw_allocator/deallocate_local.cc: Likewise.
* testsuite/ext/throw_allocator/explicit_instantiation.cc: Likewise.
* testsuite/ext/throw_allocator/variadic_construct.cc: Likewise.
* testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263008 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoRemove dg-require-cstdint directive from tests
redi [Thu, 26 Jul 2018 14:03:01 +0000 (14:03 +0000)] 
Remove dg-require-cstdint directive from tests

Tests for components which are no longer dependent on
_GLIBCXX_USE_C99_STDINT_TR1 do not need to require <cstdint>.

* testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise.
* testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc:
Likewise.
* testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc:
Likewise.
* testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc:
Likewise.
* testsuite/30_threads/recursive_mutex/requirements/typedefs.cc:
Likewise.
* testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/unlock/2.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/dest/
destructor_locked.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/native_handle/
typesizes.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: Likewise.
* testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
* testsuite/30_threads/scoped_lock/requirements/
explicit_instantiation.cc: Likewise.
* testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise.
* testsuite/30_threads/shared_future/cons/assign.cc: Likewise.
* testsuite/30_threads/shared_future/cons/constexpr.cc: Likewise.
* testsuite/30_threads/shared_future/cons/copy.cc: Likewise.
* testsuite/30_threads/shared_future/cons/default.cc: Likewise.
* testsuite/30_threads/shared_future/cons/move.cc: Likewise.
* testsuite/30_threads/shared_future/cons/move_assign.cc: Likewise.
* testsuite/30_threads/shared_future/members/45133.cc: Likewise.
* testsuite/30_threads/shared_future/members/get.cc: Likewise.
* testsuite/30_threads/shared_future/members/get2.cc: Likewise.
* testsuite/30_threads/shared_future/members/valid.cc: Likewise.
* testsuite/30_threads/shared_future/members/wait.cc: Likewise.
* testsuite/30_threads/shared_future/members/wait_for.cc: Likewise.
* testsuite/30_threads/shared_future/members/wait_until.cc: Likewise.
* testsuite/30_threads/shared_future/requirements/
explicit_instantiation.cc: Likewise.
* testsuite/30_threads/shared_lock/cons/1.cc: Likewise.
* testsuite/30_threads/shared_lock/cons/2.cc: Likewise.
* testsuite/30_threads/shared_lock/cons/3.cc: Likewise.
* testsuite/30_threads/shared_lock/cons/4.cc: Likewise.
* testsuite/30_threads/shared_lock/cons/5.cc: Likewise.
* testsuite/30_threads/shared_lock/cons/6.cc: Likewise.
* testsuite/30_threads/shared_lock/locking/1.cc: Likewise.
* testsuite/30_threads/shared_lock/locking/2.cc: Likewise.
* testsuite/30_threads/shared_lock/locking/3.cc: Likewise.
* testsuite/30_threads/shared_lock/locking/4.cc: Likewise.
* testsuite/30_threads/shared_lock/modifiers/1.cc: Likewise.
* testsuite/30_threads/shared_lock/requirements/
explicit_instantiation.cc: Likewise.
* testsuite/30_threads/shared_lock/requirements/typedefs.cc: Likewise.
* testsuite/30_threads/shared_mutex/cons/1.cc: Likewise.
* testsuite/30_threads/shared_mutex/cons/assign_neg.cc: Likewise.
* testsuite/30_threads/shared_mutex/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/shared_mutex/requirements/standard_layout.cc:
Likewise.
* testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/shared_timed_mutex/cons/1.cc: Likewise.
* testsuite/30_threads/shared_timed_mutex/cons/assign_neg.cc: Likewise.
* testsuite/30_threads/shared_timed_mutex/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/shared_timed_mutex/requirements/
standard_layout.cc: Likewise.
* testsuite/30_threads/shared_timed_mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/shared_timed_mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/shared_timed_mutex/try_lock/3.cc: Likewise.
* testsuite/30_threads/shared_timed_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/this_thread/1.cc: Likewise.
* testsuite/30_threads/this_thread/2.cc: Likewise.
* testsuite/30_threads/this_thread/3.cc: Likewise.
* testsuite/30_threads/this_thread/4.cc: Likewise.
* testsuite/30_threads/this_thread/58038.cc: Likewise.
* testsuite/30_threads/thread/70503.cc: Likewise.
* testsuite/30_threads/thread/84532.cc: Likewise.
* testsuite/30_threads/thread/adl.cc: Likewise.
* testsuite/30_threads/thread/cons/1.cc: Likewise.
* testsuite/30_threads/thread/cons/2.cc: Likewise.
* testsuite/30_threads/thread/cons/3.cc: Likewise.
* testsuite/30_threads/thread/cons/4.cc: Likewise.
* testsuite/30_threads/thread/cons/49668.cc: Likewise.
* testsuite/30_threads/thread/cons/5.cc: Likewise.
* testsuite/30_threads/thread/cons/6.cc: Likewise.
* testsuite/30_threads/thread/cons/7.cc: Likewise.
* testsuite/30_threads/thread/cons/8.cc: Likewise.
* testsuite/30_threads/thread/cons/84535.cc: Likewise.
* testsuite/30_threads/thread/cons/9.cc: Likewise.
* testsuite/30_threads/thread/cons/assign_neg.cc: Likewise.
* testsuite/30_threads/thread/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/thread/cons/lwg2097.cc: Likewise.
* testsuite/30_threads/thread/cons/moveable.cc: Likewise.
* testsuite/30_threads/thread/cons/terminate.cc: Likewise.
* testsuite/30_threads/thread/id/operators.cc: Likewise.
* testsuite/30_threads/thread/members/1.cc: Likewise.
* testsuite/30_threads/thread/members/2.cc: Likewise.
* testsuite/30_threads/thread/members/3.cc: Likewise.
* testsuite/30_threads/thread/members/4.cc: Likewise.
* testsuite/30_threads/thread/members/5.cc: Likewise.
* testsuite/30_threads/thread/members/hardware_concurrency.cc:
Likewise.
* testsuite/30_threads/thread/native_handle/cancel.cc: Likewise.
* testsuite/30_threads/thread/swap/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
* testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise.
* testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/native_handle/typesizes.cc:
Likewise.
* testsuite/30_threads/timed_mutex/requirements/
standard_layout.cc: Likewise.
* testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_until/57641.cc: Likewise.
* testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/unlock/2.cc: Likewise.
* testsuite/30_threads/try_lock/1.cc: Likewise.
* testsuite/30_threads/try_lock/2.cc: Likewise.
* testsuite/30_threads/try_lock/3.cc: Likewise.
* testsuite/30_threads/try_lock/4.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/1.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/2.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/3.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/4.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/1.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
* testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise.
* testsuite/30_threads/unique_lock/requirements/
explicit_instantiation.cc: Likewise.
* testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263007 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoRemove dg-require-cstdint directive from tests
redi [Thu, 26 Jul 2018 14:02:42 +0000 (14:02 +0000)] 
Remove dg-require-cstdint directive from tests

Tests for components which are no longer dependent on
_GLIBCXX_USE_C99_STDINT_TR1 do not need to require <cstdint>.

* testsuite/30_threads/async/42819.cc: Remove dg-require-cstdint
directive.
* testsuite/30_threads/async/49668.cc: Likewise.
* testsuite/30_threads/async/54297.cc: Likewise.
* testsuite/30_threads/async/84532.cc: Likewise.
* testsuite/30_threads/async/any.cc: Likewise.
* testsuite/30_threads/async/async.cc: Likewise.
* testsuite/30_threads/async/except.cc: Likewise.
* testsuite/30_threads/async/forced_unwind.cc: Likewise.
* testsuite/30_threads/async/launch.cc: Likewise.
* testsuite/30_threads/async/lwg2021.cc: Likewise.
* testsuite/30_threads/async/sync.cc: Likewise.
* testsuite/30_threads/call_once/39909.cc: Likewise.
* testsuite/30_threads/call_once/49668.cc: Likewise.
* testsuite/30_threads/call_once/60497.cc: Likewise.
* testsuite/30_threads/call_once/call_once1.cc: Likewise.
* testsuite/30_threads/call_once/constexpr.cc: Likewise.
* testsuite/30_threads/call_once/dr2442.cc: Likewise.
* testsuite/30_threads/call_once/once_flag.cc: Likewise.
* testsuite/30_threads/condition_variable/54185.cc: Likewise.
* testsuite/30_threads/condition_variable/cons/1.cc: Likewise.
* testsuite/30_threads/condition_variable/cons/assign_neg.cc:
Likewise.
* testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/condition_variable/members/1.cc: Likewise.
* testsuite/30_threads/condition_variable/members/2.cc: Likewise.
* testsuite/30_threads/condition_variable/members/3.cc: Likewise.
* testsuite/30_threads/condition_variable/members/53841.cc: Likewise.
* testsuite/30_threads/condition_variable/members/68519.cc: Likewise.
* testsuite/30_threads/condition_variable/native_handle/typesizes.cc:
Likewise.
* testsuite/30_threads/condition_variable/requirements/
standard_layout.cc: Likewise.
* testsuite/30_threads/condition_variable/requirements/typedefs.cc:
* Likewise.
* testsuite/30_threads/condition_variable_any/50862.cc: Likewise.
* testsuite/30_threads/condition_variable_any/53830.cc: Likewise.
* testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise.
* testsuite/30_threads/condition_variable_any/cons/assign_neg.cc:
Likewise.
* testsuite/30_threads/condition_variable_any/cons/copy_neg.cc:
Likewise.
* testsuite/30_threads/condition_variable_any/members/1.cc: Likewise.
* testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
* testsuite/30_threads/future/cons/assign_neg.cc: Likewise.
* testsuite/30_threads/future/cons/constexpr.cc: Likewise.
* testsuite/30_threads/future/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/future/cons/default.cc: Likewise.
* testsuite/30_threads/future/cons/move.cc: Likewise.
* testsuite/30_threads/future/cons/move_assign.cc: Likewise.
* testsuite/30_threads/future/members/45133.cc: Likewise.
* testsuite/30_threads/future/members/get.cc: Likewise.
* testsuite/30_threads/future/members/get2.cc: Likewise.
* testsuite/30_threads/future/members/share.cc: Likewise.
* testsuite/30_threads/future/members/valid.cc: Likewise.
* testsuite/30_threads/future/members/wait.cc: Likewise.
* testsuite/30_threads/future/members/wait_for.cc: Likewise.
* testsuite/30_threads/future/members/wait_until.cc: Likewise.
* testsuite/30_threads/future/requirements/explicit_instantiation.cc:
Likewise.
* testsuite/30_threads/headers/condition_variable/types_std_c++0x.cc:
Likewise.
* testsuite/30_threads/headers/future/types_std_c++0x.cc: Likewise.
* testsuite/30_threads/headers/mutex/types_std_c++0x.cc: Likewise.
* testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise.
* testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise.
* testsuite/30_threads/lock/1.cc: Likewise.
* testsuite/30_threads/lock/2.cc: Likewise.
* testsuite/30_threads/lock/3.cc: Likewise.
* testsuite/30_threads/lock/4.cc: Likewise.
* testsuite/30_threads/lock_guard/cons/1.cc: Likewise.
* testsuite/30_threads/lock_guard/requirements/
explicit_instantiation.cc: Likewise.
* testsuite/30_threads/lock_guard/requirements/typedefs.cc: Likewise.
* testsuite/30_threads/mutex/cons/1.cc: Likewise.
* testsuite/30_threads/mutex/cons/assign_neg.cc: Likewise.
* testsuite/30_threads/mutex/cons/constexpr.cc: Likewise.
* testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise.
* testsuite/30_threads/mutex/lock/1.cc: Likewise.
* testsuite/30_threads/mutex/native_handle/1.cc: Likewise.
* testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise.
* testsuite/30_threads/mutex/requirements/standard_layout.cc::
Likewise.
* testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise.
* testsuite/30_threads/mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/mutex/unlock/2.cc: Likewise.
* testsuite/30_threads/once_flag/cons/constexpr.cc: Likewise.
* testsuite/30_threads/packaged_task/49668.cc: Likewise.
* testsuite/30_threads/packaged_task/60564.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/1.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/2.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/3.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/56492.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/alloc.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/alloc2.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/alloc_min.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/assign_neg.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/move.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/move_assign.cc: Likewise.
* testsuite/30_threads/packaged_task/members/at_thread_exit.cc:
Likewise.
* testsuite/30_threads/packaged_task/members/get_future.cc: Likewise.
* testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke2.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke3.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke4.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke5.cc: Likewise.
* testsuite/30_threads/packaged_task/members/reset.cc: Likewise.
* testsuite/30_threads/packaged_task/members/reset2.cc: Likewise.
* testsuite/30_threads/packaged_task/members/swap.cc: Likewise.
* testsuite/30_threads/packaged_task/members/valid.cc: Likewise.
* testsuite/30_threads/packaged_task/requirements/
explicit_instantiation.cc: Likewise.
* testsuite/30_threads/packaged_task/uses_allocator.cc: Likewise.
* testsuite/30_threads/promise/60966.cc: Likewise.
* testsuite/30_threads/promise/69106.cc: Likewise.
* testsuite/30_threads/promise/cons/1.cc: Likewise.
* testsuite/30_threads/promise/cons/alloc.cc: Likewise.
* testsuite/30_threads/promise/cons/alloc2.cc: Likewise.
* testsuite/30_threads/promise/cons/alloc_min.cc: Likewise.
* testsuite/30_threads/promise/cons/assign_neg.cc: Likewise.
* testsuite/30_threads/promise/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/promise/cons/move.cc: Likewise.
* testsuite/30_threads/promise/cons/move_assign.cc: Likewise.
* testsuite/30_threads/promise/members/at_thread_exit.cc: Likewise.
* testsuite/30_threads/promise/members/at_thread_exit2.cc: Likewise.
* testsuite/30_threads/promise/members/get_future.cc: Likewise.
* testsuite/30_threads/promise/members/get_future2.cc: Likewise.
* testsuite/30_threads/promise/members/set_exception.cc: Likewise.
* testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
* testsuite/30_threads/promise/members/set_value.cc: Likewise.
* testsuite/30_threads/promise/members/set_value2.cc: Likewise.
* testsuite/30_threads/promise/members/set_value3.cc: Likewise.
* testsuite/30_threads/promise/members/swap.cc: Likewise.
* testsuite/30_threads/promise/requirements/explicit_instantiation.cc:
* Likewise.
* testsuite/30_threads/promise/uses_allocator.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263006 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoRemove dg-require-cstdint directive from tests
redi [Thu, 26 Jul 2018 14:02:26 +0000 (14:02 +0000)] 
Remove dg-require-cstdint directive from tests

Tests for components which are no longer dependent on
_GLIBCXX_USE_C99_STDINT_TR1 do not need to require <cstdint>.

* testsuite/18_support/numeric_limits/char16_32_t.cc: Qualify names
from namespace std.
* testsuite/20_util/align/2.cc: Remove dg-require-cstdint directive.
* testsuite/20_util/duration/arithmetic/1.cc: Likewise.
* testsuite/20_util/duration/arithmetic/2.cc: Likewise.
* testsuite/20_util/duration/arithmetic/dr2020.cc: Likewise.
* testsuite/20_util/duration/arithmetic/dr934-1.cc: Likewise.
* testsuite/20_util/duration/arithmetic/dr934-2.cc: Likewise.
* testsuite/20_util/duration/comparison_operators/1.cc: Likewise.
* testsuite/20_util/duration/cons/1.cc: Likewise.
* testsuite/20_util/duration/cons/1_neg.cc: Likewise.
* testsuite/20_util/duration/cons/2.cc: Likewise.
* testsuite/20_util/duration/cons/54025.cc: Likewise.
* testsuite/20_util/duration/cons/dr974_neg.cc: Likewise.
* testsuite/20_util/duration/requirements/explicit_instantiation/
explicit_instantiation.cc: Likewise.
* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
* testsuite/20_util/make_signed/requirements/typedefs-4.cc: Likewise.
* testsuite/20_util/ratio/comparisons/comp1.cc: Likewise.
* testsuite/20_util/ratio/comparisons/comp2.cc: Likewise.
* testsuite/20_util/ratio/comparisons/comp3.cc: Likewise.
* testsuite/20_util/ratio/cons/cons1.cc: Likewise.
* testsuite/20_util/ratio/operations/45866.cc: Likewise.
* testsuite/20_util/ratio/operations/47913.cc: Likewise.
* testsuite/20_util/ratio/operations/53840.cc: Likewise.
* testsuite/20_util/ratio/operations/ops1.cc: Likewise.
* testsuite/20_util/shared_ptr/atomic/3.cc: Likewise.
* testsuite/20_util/system_clock/1.cc: Likewise.
* testsuite/20_util/time_point/1.cc: Likewise.
* testsuite/20_util/time_point/2.cc: Likewise.
* testsuite/20_util/time_point/3.cc: Likewise.
* testsuite/20_util/time_point/requirements/explicit_instantiation/
explicit_instantiation.cc: Likewise.
* testsuite/21_strings/basic_string/requirements/
explicit_instantiation/char16_t/1.cc: Likewise.
* testsuite/21_strings/basic_string/requirements/
explicit_instantiation/char32_t/1.cc: Likewise.
* testsuite/21_strings/basic_string_view/requirements/
explicit_instantiation/char16_t/1.cc: Likewise.
* testsuite/21_strings/basic_string_view/requirements/
explicit_instantiation/char32_t/1.cc: Likewise.
* testsuite/21_strings/char_traits/requirements/
explicit_instantiation/char16_t/1.cc: Likewise.
* testsuite/21_strings/char_traits/requirements/
explicit_instantiation/char32_t/1.cc: Likewise.
* testsuite/21_strings/headers/string/types_std_c++0x.cc: Likewise.
* testsuite/22_locale/codecvt/char16_t.cc: Likewise.
* testsuite/22_locale/codecvt/char32_t.cc: Likewise.
* testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc:
Likewise.
* testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc:
Likewise.
* testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc:
Likewise.
* testsuite/22_locale/codecvt/utf8.cc: Likewise.
* testsuite/23_containers/vector/bool/72847.cc: Likewise.
* testsuite/23_containers/vector/debug/multithreaded_swap.cc:
Likewise.
* testsuite/experimental/string_view/requirements/
explicit_instantiation/char16_t/1.cc: Likewise.
* testsuite/experimental/string_view/requirements/
explicit_instantiation/char32_t/1.cc: Likewise.
* testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/
1.cc: Likewise.
* testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/
1.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263005 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd missing checks for _GLIBCXX_USE_C99_STDINT_TR1
redi [Thu, 26 Jul 2018 14:02:11 +0000 (14:02 +0000)] 
Add missing checks for _GLIBCXX_USE_C99_STDINT_TR1

The throw_allocator extension depends on <tr1/random> which depends on
_GLIBCXX_USE_C99_STDINT_TR1.

The Transactional Memory support uses fixed-width integer types from
<stdint.h>.

* include/ext/throw_allocator.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(random_condition, throw_value_random, throw_allocator_random)
(std::hash<throw_value_random>): Do not define when <tr1/random> is
not usable.
* src/c++11/cow-stdexcept.cc [!_GLIBCXX_USE_C99_STDINT_TR1]: Do not
define transactional memory support when <stdint.h> is not usable.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263004 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoModify some library internals to work without <stdint.h>
redi [Thu, 26 Jul 2018 14:02:05 +0000 (14:02 +0000)] 
Modify some library internals to work without <stdint.h>

std::__detail::__clp2 used uint_fast32_t and uint_fast64_t without
checking _GLIBCXX_USE_C99_STDINT_TR1 which was a potential bug. A
simpler implementation based on the new std::__ceil2 code performs
better and doesn't depend on <stdint.h> types.

std::align and other C++11 functions in <memory> where unnecessarily
missing when _GLIBCXX_USE_C99_STDINT_TR1 was not defined.

* include/bits/hashtable_policy.h (__detail::__clp2): Use faster
implementation that doesn't depend on <stdint.h> types.
* include/std/memory (align) [!_GLIBCXX_USE_C99_STDINT_TR1]: Use
std::size_t when std::uintptr_t is not usable.
[!_GLIBCXX_USE_C99_STDINT_TR1] (pointer_safety, declare_reachable)
(undeclare_reachable, declare_no_pointers, undeclare_no_pointers):
Define independent of _GLIBCXX_USE_C99_STDINT_TR1.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263003 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoRemove char16_t and char32_t dependency on <stdint.h>
redi [Thu, 26 Jul 2018 14:02:01 +0000 (14:02 +0000)] 
Remove char16_t and char32_t dependency on <stdint.h>

The char16_t and char32_t types are automatically defined by the
compiler and do not depend on support in <stdint.h>. The char_traits
specializations depend on uint_leastNN_t but can be made to work anyway
by using the predefined macros, or as a last resort make_unsigned.

* include/bits/basic_string.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(hash<u16string>, hash<u32string>): Remove dependency on
_GLIBCXX_USE_C99_STDINT_TR1.
* include/bits/char_traits.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(char_traits<char16_t>, char_traits<char32_t>): Remove dependency on
_GLIBCXX_USE_C99_STDINT_TR1. Use __UINT_LEAST16_TYPE__ and
__UINT_LEAST32_TYPE__ or make_unsigned when <stdint.h> is not usable.
* include/bits/codecvt.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(codecvt<char16_t, char, mbstate_t>)
(codecvt<char32_t, char, mbstate_t>)
(codecvt_byname<char16_t, char, mbstate_t>)
(codecvt_byname<char32_t, char, mbstate_t>): Remove dependency
on _GLIBCXX_USE_C99_STDINT_TR1.
* include/bits/locale_facets.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(_GLIBCXX_NUM_UNICODE_FACETS): Likewise.
* include/bits/stringfwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(char_traits<char16_t>, char_traits<char32_t>)
(basic_string<char16_t>, basic_string<char32_t>): Remove dependency
on _GLIBCXX_USE_C99_STDINT_TR1.
* include/experimental/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
(u16string_view, u32string_view, hash<u16string_view>)
(hash<u32string_view>, operator""sv(const char16_t, size_t))
(operator""sv(const char32_t, size_t)): Likewise.
* include/ext/vstring.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(hash<__u16vstring>, hash<__u32vstring>): Likewise.
* include/ext/vstring_fwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(__u16vstring, __u16sso_string, __u16rc_string, __u32vstring)
(__u32sso_string, __u32rc_string): Likewise.
* include/std/codecvt [!_GLIBCXX_USE_C99_STDINT_TR1] (codecvt_mode)
(codecvt_utf8, codecvt_utf16, codecvt_utf8_utf16): Likewise.
* include/std/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
(u16string_view, u32string_view, hash<u16string_view>)
(hash<u32string_view>, operator""sv(const char16_t, size_t))
(operator""sv(const char32_t, size_t)): Likewise.
* src/c++11/codecvt.cc: Likewise.
* src/c++98/locale_init.cc: Likewise.
* src/c++98/localename.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263002 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoRemove <chrono> dependency on _GLIBCXX_USE_C99_STDINT_TR1
redi [Thu, 26 Jul 2018 14:01:55 +0000 (14:01 +0000)] 
Remove <chrono> dependency on _GLIBCXX_USE_C99_STDINT_TR1

By adding fallback definitions of std::intmax_t and std::uintmax_t it's
possible to define <ratio> without _GLIBCXX_USE_C99_STDINT_TR1. This in
turn allows most of <chrono> to be defined, which removes the dependency
on _GLIBCXX_USE_C99_STDINT_TR1 for all of the C++11 concurrency features.

The compiler defines __INTMAX_TYPE__ and __UINTMAX_TYPE__
unconditionally so it should be safe to rely on them.

* include/bits/atomic_futex.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(__atomic_futex_unsigned_base): Remove dependency on
_GLIBCXX_USE_C99_STDINT_TR1 macro.
* include/bits/unique_lock.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(unique_lock): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1.
* include/c_global/cstdint [!_GLIBCXX_USE_C99_STDINT_TR1] (intmax_t)
(uintmax_t): Define using predefined macros.
* include/std/chrono [!_GLIBCXX_USE_C99_STDINT_TR1] (duration)
(time_point, system_clock, high_resolution_clock, steady_clock): Remove
dependency on _GLIBCXX_USE_C99_STDINT_TR1 macro.
(nanoseconds, microseconds, milliseconds, seconds, minutes, hours):
[!_GLIBCXX_USE_C99_STDINT_TR1]: Define using __INT64_TYPE__ or
long long when <stdint.h> is not usable.
* include/std/condition_variable [!_GLIBCXX_USE_C99_STDINT_TR1]
(condition_variable, condition_variable_any): Remove dependency on
_GLIBCXX_USE_C99_STDINT_TR1.
* include/std/future [!_GLIBCXX_USE_C99_STDINT_TR1] (future, promise)
(packaged_task, async): Likewise.
* include/std/mutex [!_GLIBCXX_USE_C99_STDINT_TR1] (recursive_mutex)
(timed_mutex, recursive_timed_mutex, try_lock, lock, scoped_lock)
(once_flag, call_once): Likewise.
* include/std/ratio [!_GLIBCXX_USE_C99_STDINT_TR1] (ratio): Likewise.
* include/std/shared_mutex [!_GLIBCXX_USE_C99_STDINT_TR1]
(shared_mutex, shared_timed_mutex, shared_lock): Likewise.
* include/std/thread [!_GLIBCXX_USE_C99_STDINT_TR1] (thread)
(this_thread::get_id, this_thread::yield, this_thread::sleep_for)
(this_thread::sleep_until): Likewise.
* src/c++11/chrono.cc: Remove dependency on
_GLIBCXX_USE_C99_STDINT_TR1 macro.
* src/c++11/condition_variable.cc: Likewise.
* src/c++11/futex.cc: Likewise.
* src/c++11/future.cc: Likewise.
* src/c++11/mutex.cc: Likewise.
* src/c++11/thread.cc: Likewise.
* testsuite/20_util/duration/literals/range_neg.cc: Adjust dg-error.
* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
* testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
* testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263001 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoxfail experimental/memory_resource/new_delete_resource.cc on 32-bit Solaris/x86 ...
ro [Thu, 26 Jul 2018 12:36:21 +0000 (12:36 +0000)] 
xfail experimental/memory_resource/new_delete_resource.cc on 32-bit Solaris/x86 (PR libstdc++/77691)

PR libstdc++/77691
* testsuite/experimental/memory_resource/new_delete_resource.cc:
xfail execution on 32-bit Solaris/x86.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263000 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd linker_output as prefix for LTO temps (PR lto/86548).
marxin [Thu, 26 Jul 2018 12:13:14 +0000 (12:13 +0000)] 
Add linker_output as prefix for LTO temps (PR lto/86548).

2018-07-26  Martin Liska  <mliska@suse.cz>

        PR lto/86548
* lto-wrapper.c: Add linker_output as prefix
        for ltrans_output_file.
2018-07-26  Martin Liska  <mliska@suse.cz>

        PR lto/86548
* libiberty.h (make_temp_file_with_prefix): New function.
2018-07-26  Martin Liska  <mliska@suse.cz>

        PR lto/86548
* make-temp-file.c (TEMP_FILE): Remove leading 'cc'.
(make_temp_file): Call make_temp_file_with_prefix with
        first argument set to NULL.
(make_temp_file_with_prefix): Support also prefix.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262999 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agooptimize std::vector move assignment
glisse [Thu, 26 Jul 2018 12:01:14 +0000 (12:01 +0000)] 
optimize std::vector move assignment

2018-07-26  Marc Glisse  <marc.glisse@inria.fr>

* include/bits/stl_vector.h (_Vector_impl_data::_M_copy_data): New.
(_Vector_impl_data::_M_swap_data): Use _M_copy_data.
(vector::_M_move_assign): Reorder the swaps.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262998 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[libgomp, nvptx] Add error with recompilation hint for launch failure
vries [Thu, 26 Jul 2018 11:42:29 +0000 (11:42 +0000)] 
[libgomp, nvptx] Add error with recompilation hint for launch failure

Currently, when a kernel is lauched with too many workers, it results in a cuda
launch failure.  This is triggered f.i. for parallel-loop-1.c at -O0 on a Quadro
M1200.

This patch detects this situation, and errors out with a hint on how to fix it.

Build and reg-tested on x86_64 with nvptx accelerator.

2018-07-26  Cesar Philippidis  <cesar@codesourcery.com>
    Tom de Vries  <tdevries@suse.de>

* plugin/plugin-nvptx.c (nvptx_exec): Error if the hardware doesn't have
sufficient resources to launch a kernel, and give a hint on how to fix
it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262997 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[libgomp, nvptx] Move device property sampling from nvptx_exec to nvptx_open
vries [Thu, 26 Jul 2018 11:42:19 +0000 (11:42 +0000)] 
[libgomp, nvptx] Move device property sampling from nvptx_exec to nvptx_open

Move sampling of device properties from nvptx_exec to nvptx_open, and assume
the sampling always succeeds.  This simplifies the default dimension
initialization code in nvptx_open.

2018-07-26  Cesar Philippidis  <cesar@codesourcery.com>
    Tom de Vries  <tdevries@suse.de>

* plugin/plugin-nvptx.c (struct ptx_device): Add warp_size,
max_threads_per_block and max_threads_per_multiprocessor fields.
(nvptx_open_device): Initialize new fields.
(nvptx_exec): Use num_sms, and new fields.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262996 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agocombine: Another hard register problem (PR85805)
segher [Thu, 26 Jul 2018 10:16:48 +0000 (10:16 +0000)] 
combine: Another hard register problem (PR85805)

The current code in reg_nonzero_bits_for_combine allows using the
reg_stat info when last_set_mode is a different integer mode.  This is
completely wrong for non-pseudos.  For example, as in the PR, a value
in a DImode hard register is set by eight writes to its constituent
QImode parts.  The value written to the DImode is not the same as that
written to the lowest-numbered QImode!

PR rtl-optimization/85805
* combine.c (reg_nonzero_bits_for_combine): Only use the last set
value for hard registers if that was written in the same mode.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262994 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agogcov: Fix wrong usage of NAN in statistics (PR gcov-profile/86536).
marxin [Thu, 26 Jul 2018 08:50:21 +0000 (08:50 +0000)] 
gcov: Fix wrong usage of NAN in statistics (PR gcov-profile/86536).

2018-07-26  Martin Liska  <mliska@suse.cz>

        PR gcov-profile/86536
* gcov.c (format_gcov): Use printf format %.*f directly
        and do not handle special values.
2018-07-26  Martin Liska  <mliska@suse.cz>

        PR gcov-profile/86536
* gcc.misc-tests/gcov-pr86536.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262991 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[libgomp, openacc, testsuite] Fix async logic in lib-12.f90
vries [Thu, 26 Jul 2018 07:52:45 +0000 (07:52 +0000)] 
[libgomp, openacc, testsuite] Fix async logic in lib-12.f90

In testcase lib-12.f90, all acc_async_test calls are placed in a location
where they are not guaranteed to succeed, which explains why there's an xfail
for the lower optimization levels.

This patch fixes the problem by moving the acc_async_test calls to the correct
locations.

Reg-tested on x86_64 with nvptx accelerator.

2018-07-26  Tom de Vries  <tdevries@suse.de>

* testsuite/libgomp.oacc-fortran/lib-12.f90: Move acc_async_test calls
to correct locations.  Remove xfail.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262990 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[libgomp, openacc, testsuite] Fix async/wait logic in lib-13.f90
vries [Thu, 26 Jul 2018 07:52:35 +0000 (07:52 +0000)] 
[libgomp, openacc, testsuite] Fix async/wait logic in lib-13.f90

The purpose of the lib-13.f90 test-case is to test acc_wait_all_async.  The
test indeed calls acc_wait_all_async, but then subsequentlys calls
acc_wait_all, so the acc_wait_all_async functionality is not tested.
Furthermore, all acc_async_test calls are placed in a location where they are
not guaranteed to succeed, which explains why there's an xfail for the lower
optimization levels.

This patch fixes the problems by replacing acc_wait_all with an acc_wait on
the async id used for the acc_wait_all_async call, and moving the
acc_async_test calls to the correct locations.

Reg-tested on x86_64 with nvptx accelerator.

2018-07-26  Tom de Vries  <tdevries@suse.de>

* testsuite/libgomp.oacc-fortran/lib-13.f90: Replace acc_wait_all with
acc_wait.  Move acc_async_test calls to correct locations.  Remove
xfail.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262989 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDaily bump.
gccadmin [Thu, 26 Jul 2018 00:16:29 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262988 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR libstdc++/86676 another alignment fix for test
redi [Wed, 25 Jul 2018 23:38:17 +0000 (23:38 +0000)] 
PR libstdc++/86676 another alignment fix for test

PR libstdc++/86676
* testsuite/20_util/monotonic_buffer_resource/release.cc: Request
same alignment for post-release allocation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262984 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * es.po, ja.po, sv.po: Update.
jsm28 [Wed, 25 Jul 2018 21:37:39 +0000 (21:37 +0000)] 
* es.po, ja.po, sv.po: Update.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262982 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agogcc/testsuite/ChangeLog:
msebor [Wed, 25 Jul 2018 20:53:42 +0000 (20:53 +0000)] 
gcc/testsuite/ChangeLog:

* gcc.c-torture/execute/builtins/strnlen.c: Remove DejaGnu directives
ignored by the test harness.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262981 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR libstdc++/86676 Do not assume stack buffer is aligned
redi [Wed, 25 Jul 2018 20:23:07 +0000 (20:23 +0000)] 
PR libstdc++/86676 Do not assume stack buffer is aligned

PR libstdc++/86676
* testsuite/20_util/monotonic_buffer_resource/release.cc: Allow for
buffer being misaligned and so returned pointer not being at start.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262980 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-07-25 Nicolas Koenig <koenigni@gcc.gnu.org>
koenigni [Wed, 25 Jul 2018 19:34:33 +0000 (19:34 +0000)] 
2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
Thomas Koenig <tkoenig@gcc.gnu.org>

PR fortran/25829
* testsuite/libgomp.fortran/async_io_1.f90: Really commit.
* testsuite/libgomp.fortran/async_io_2.f90: Really commit.
* testsuite/libgomp.fortran/async_io_3.f90: Really commit.
* testsuite/libgomp.fortran/async_io_4.f90: Really commit.
* testsuite/libgomp.fortran/async_io_5.f90: Really commit.
* testsuite/libgomp.fortran/async_io_6.f90: Really commit.
* testsuite/libgomp.fortran/async_io_7.f90: Really commit.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262979 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-07-25 Nicolas Koenig <koenigni@gcc.gnu.org>
koenigni [Wed, 25 Jul 2018 18:48:39 +0000 (18:48 +0000)] 
2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
Thomas Koenig <tkoenig@gcc.gnu.org>

PR fortran/25829
* gfortran.texi: Add description of asynchronous I/O.
* trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables
as volatile.
* trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to
st_wait_async and change argument spec from ".X" to ".w".
(gfc_trans_wait): Pass ID argument via reference.

2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
Thomas Koenig <tkoenig@gcc.gnu.org>

PR fortran/25829
* gfortran.dg/f2003_inquire_1.f03: Add write statement.
* gfortran.dg/f2003_io_1.f03: Add wait statement.

2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
Thomas Koenig <tkoenig@gcc.gnu.org>

PR fortran/25829
* Makefile.am: Add async.c to gfor_io_src.
Add async.h to gfor_io_headers.
* Makefile.in: Regenerated.
* gfortran.map: Add _gfortran_st_wait_async.
* io/async.c: New file.
* io/async.h: New file.
* io/close.c: Include async.h.
(st_close): Call async_wait for an asynchronous unit.
* io/file_pos.c (st_backspace): Likewise.
(st_endfile): Likewise.
(st_rewind): Likewise.
(st_flush): Likewise.
* io/inquire.c: Add handling for asynchronous PENDING
and ID arguments.
* io/io.h (st_parameter_dt): Add async bit.
(st_parameter_wait): Correct.
(gfc_unit): Add au pointer.
(st_wait_async): Add prototype.
(transfer_array_inner): Likewise.
(st_write_done_worker): Likewise.
* io/open.c: Include async.h.
(new_unit): Initialize asynchronous unit.
* io/transfer.c (async_opt): New struct.
(wrap_scalar_transfer): New function.
(transfer_integer): Call wrap_scalar_transfer to do the work.
(transfer_real): Likewise.
(transfer_real_write): Likewise.
(transfer_character): Likewise.
(transfer_character_wide): Likewise.
(transfer_complex): Likewise.
(transfer_array_inner): New function.
(transfer_array): Call transfer_array_inner.
(transfer_derived): Call wrap_scalar_transfer.
(data_transfer_init): Check for asynchronous I/O.
Perform a wait operation on any pending asynchronous I/O
if the data transfer is synchronous. Copy PDT and enqueue
thread for data transfer.
(st_read_done_worker): New function.
(st_read_done): Enqueue transfer or call st_read_done_worker.
(st_write_done_worker): New function.
(st_write_done): Enqueue transfer or call st_read_done_worker.
(st_wait): Document as no-op for compatibility reasons.
(st_wait_async): New function.
* io/unit.c (insert_unit): Use macros LOCK, UNLOCK and TRYLOCK;
add NOTE where necessary.
(get_gfc_unit): Likewise.
(init_units): Likewise.
(close_unit_1): Likewise. Call async_close if asynchronous.
(close_unit): Use macros LOCK and UNLOCK.
(finish_last_advance_record): Likewise.
(newunit_alloc): Likewise.
* io/unix.c (find_file): Likewise.
(flush_all_units_1): Likewise.
(flush_all_units): Likewise.
* libgfortran.h (generate_error_common): Add prototype.
* runtime/error.c: Include io.h and async.h.
(generate_error_common): New function.

2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
Thomas Koenig <tkoenig@gcc.gnu.org>

PR fortran/25829
* testsuite/libgomp.fortran/async_io_1.f90: New test.
* testsuite/libgomp.fortran/async_io_2.f90: New test.
* testsuite/libgomp.fortran/async_io_3.f90: New test.
* testsuite/libgomp.fortran/async_io_4.f90: New test.
* testsuite/libgomp.fortran/async_io_5.f90: New test.
* testsuite/libgomp.fortran/async_io_6.f90: New test.
* testsuite/libgomp.fortran/async_io_7.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262978 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd missing header for std::max_align_t
redi [Wed, 25 Jul 2018 17:24:49 +0000 (17:24 +0000)] 
Add missing header for std::max_align_t

* include/experimental/memory_resource: Include <cstddef> header.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262977 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * cp-tree.h (enum cp_tree_index): Add
jakub [Wed, 25 Jul 2018 16:47:18 +0000 (16:47 +0000)] 
* cp-tree.h (enum cp_tree_index): Add
CPTI_{ABI_TAG,ALIGNED,BEGIN,END,GET,TUPLE_{ELEMENT,SIZE}}_IDENTIFIER
and CPTI_{GNU,TYPE,VALUE,FUN,CLOSURE}_IDENTIFIER.
(abi_tag_identifier, aligned_identifier, begin_identifier,
end_identifier, get__identifier, gnu_identifier,
tuple_element_identifier, tuple_size_identifier, type_identifier,
value_identifier, fun_identifier, closure_identifier): Define.
* decl.c (initialize_predefined_identifiers): Initialize the above
identifiers.
(get_tuple_size): Use tuple_size_identifier instead of
get_identifier ("tuple_size") and value_identifier instead of
get_identifier ("value").
(get_tuple_element_type): Use tuple_element_identifier instead of
get_identifier ("tuple_element") and type_identifier instead of
get_identifier ("type").
(get_tuple_decomp_init): Use get__identifier instead of
get_identifier ("get").
* lambda.c (maybe_add_lambda_conv_op): Use fun_identifier instead of
get_identifier ("_FUN").
* parser.c (cp_parser_lambda_declarator_opt): Use closure_identifier
instead of get_identifier ("__closure").
(cp_parser_std_attribute): Use gnu_identifier instead of
get_identifier ("gnu").
(cp_parser_std_attribute_spec): Likewise.  Use aligned_identifier
instead of get_identifier ("aligned").
* class.c (check_abi_tags, inherit_targ_abi_tags): Use
abi_tag_identifier instead of get_identifier ("abi_tag").

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262976 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR c++/85515
jakub [Wed, 25 Jul 2018 16:46:34 +0000 (16:46 +0000)] 
PR c++/85515
* cp-tree.h (enum cp_tree_index): Add
CPTI_FOR_{RANGE,BEGIN,END}{,_}_IDENTIFIER.
(for_range__identifier, for_begin__identifier, for_end__identifier,
for_range_identifier, for_begin_identifier, for_end_identifier):
Define.
* decl.c (initialize_predefined_identifiers): Initialize
for_{range,begin,end}{,_}_identifier.
* parser.c (build_range_temp): Use for_range__identifier instead of
get_identifier ("__for_range").
(cp_convert_range_for): Use for_begin__identifier and
for_end__identifier instead of get_identifier ("__for_begin") and
get_identifier ("__for_end").
* semantics.c (finish_for_stmt): Rename "__for_{range,begin,end} "
local symbols to "__for_{range,begin,end}".

* g++.dg/pr85515-2.C: Add expected dg-error.
* g++.dg/cpp0x/range-for36.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262975 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[ARC] Update default optimizations for size.
claziss [Wed, 25 Jul 2018 14:31:34 +0000 (14:31 +0000)] 
[ARC] Update default optimizations for size.

Update the list of default optimizations used for size compilations.

gcc/
2018-07-10  Claudiu Zissulescu  <claziss@synopsys.com>

* common/config/arc/arc-common.c (arc_option_optimization_table):
Update default optimizations for size.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262973 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoRegenerate .pot files.
jsm28 [Wed, 25 Jul 2018 14:31:18 +0000 (14:31 +0000)] 
Regenerate .pot files.

gcc/po:
* gcc.pot: Regenerate.

libcpp/po:
* cpplib.pot: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262972 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[ARC] Improve instruction selection for fp moves.
claziss [Wed, 25 Jul 2018 14:31:16 +0000 (14:31 +0000)] 
[ARC] Improve instruction selection for fp moves.

Improve selection of short instruction for fp-moves.

gcc/
2018-05-17  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.md (movsf_insn): Add short instruction selection.
* config/arc/constraints.md (CfZ): New constraint.
* config/arc/fpu.md (addssf3_fpu): Use CfZ constraint.
(subsf3_fpu): Likewise.
(cmpsf_fpu): Likewise.
(cmpsf_fpu_uneq): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262971 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[ARC] Fix uncache attribute.
claziss [Wed, 25 Jul 2018 14:31:04 +0000 (14:31 +0000)] 
[ARC] Fix uncache attribute.

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262970 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[ARC] Add more additional register names
claziss [Wed, 25 Jul 2018 14:30:52 +0000 (14:30 +0000)] 
[ARC] Add more additional register names

gcc/
  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.h (ADDITIONAL_REGISTER_NAMES): Add additional
register names.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262969 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agooptinfo-emit-json.cc: fix trivial memory leak
dmalcolm [Wed, 25 Jul 2018 14:18:22 +0000 (14:18 +0000)] 
optinfo-emit-json.cc: fix trivial memory leak

gcc/ChangeLog:
* optinfo-emit-json.cc (class optrecord_json_writer): Convert
field "m_scopes" from vec to auto_vec.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262967 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoFix wrong declaration.
marxin [Wed, 25 Jul 2018 12:16:48 +0000 (12:16 +0000)] 
Fix wrong declaration.

2018-07-25  Martin Liska  <mliska@suse.cz>

* config/powerpcspe/powerpcspe-protos.h (rs6000_loop_align): Fix
        return type.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262966 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-07-25 Richard Biener <rguenther@suse.de>
rguenth [Wed, 25 Jul 2018 12:10:13 +0000 (12:10 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262965 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd new src/c++17 directory to list in acinclude.m4
redi [Wed, 25 Jul 2018 11:01:39 +0000 (11:01 +0000)] 
Add new src/c++17 directory to list in acinclude.m4

* acinclude.m4 (glibcxx_SUBDIRS): Add src/c++17.
* src/Makefile.am: Add comment.
* src/c++17/Makefile.in: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262964 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoMove std::unique_lock definition to a separate header
redi [Wed, 25 Jul 2018 10:40:12 +0000 (10:40 +0000)] 
Move std::unique_lock definition to a separate header

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262963 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd PR number
rsandifo [Wed, 25 Jul 2018 08:42:38 +0000 (08:42 +0000)] 
Add PR number

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262962 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoFix ceil_log2(0) (PR 86644)
rsandifo [Wed, 25 Jul 2018 08:41:35 +0000 (08:41 +0000)] 
Fix ceil_log2(0) (PR 86644)

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262961 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoLimit dump_flag enum values range (PR middle-end/86645).
marxin [Wed, 25 Jul 2018 08:04:15 +0000 (08:04 +0000)] 
Limit dump_flag enum values range (PR middle-end/86645).

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262960 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoExplain asan parameters in params.def (PR sanitizer/79635).
marxin [Wed, 25 Jul 2018 08:02:53 +0000 (08:02 +0000)] 
Explain asan parameters in params.def (PR sanitizer/79635).

2018-07-25  Martin Liska  <mliska@suse.cz>

        PR sanitizer/79635
* params.def: Explain ASan abbreviation and provide
        a documentation link.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262959 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR tree-optimization/86622 - incorrect strlen of array of array plus variable offset
msebor [Wed, 25 Jul 2018 02:11:31 +0000 (02:11 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262958 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDaily bump.
gccadmin [Wed, 25 Jul 2018 00:16:34 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262957 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd initial version of C++17 <memory_resource> header
redi [Tue, 24 Jul 2018 21:09:55 +0000 (21:09 +0000)] 
Add initial version of C++17 <memory_resource> header

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262953 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR libstdc++/86658 fix __niter_wrap to not copy invalid iterators
redi [Tue, 24 Jul 2018 20:49:10 +0000 (20:49 +0000)] 
PR libstdc++/86658 fix __niter_wrap to not copy invalid iterators

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262952 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAvoid &LOOP_VINFO_MASKS for bb vectorisation (PR 86618)
rsandifo [Tue, 24 Jul 2018 18:08:19 +0000 (18:08 +0000)] 
Avoid &LOOP_VINFO_MASKS for bb vectorisation (PR 86618)

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262951 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoFix segfault in -fsave-optimization-record (PR tree-optimization/86636)
dmalcolm [Tue, 24 Jul 2018 16:06:58 +0000 (16:06 +0000)] 
Fix segfault in -fsave-optimization-record (PR tree-optimization/86636)

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262950 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[GCC][AARCH64] Canonicalize aarch64 widening simd plus insns
ktkachov [Tue, 24 Jul 2018 15:37:52 +0000 (15:37 +0000)] 
[GCC][AARCH64] Canonicalize aarch64 widening simd plus insns

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262949 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR middle-end/86627
jakub [Tue, 24 Jul 2018 14:23:18 +0000 (14:23 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262948 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoMinor refactoring in <bit> header
redi [Tue, 24 Jul 2018 13:51:50 +0000 (13:51 +0000)] 
Minor refactoring in <bit> header

* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262947 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-07-24 Richard Biener <rguenther@suse.de>
rguenth [Tue, 24 Jul 2018 13:29:07 +0000 (13:29 +0000)] 
2018-07-24  Richard Biener  <rguenther@suse.de>

* match.pd: Add BIT_FIELD_REF canonicalizations.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262946 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoReorder conditions in uses-allocator construction helper
redi [Tue, 24 Jul 2018 13:03:25 +0000 (13:03 +0000)] 
Reorder conditions in uses-allocator construction helper

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262945 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoMake __resource_adaptor_imp usable with C++17 memory_resource
redi [Tue, 24 Jul 2018 13:03:20 +0000 (13:03 +0000)] 
Make __resource_adaptor_imp usable with C++17 memory_resource

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262944 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR libstdc++/70966 fix lifetime bug for default resource
redi [Tue, 24 Jul 2018 13:03:11 +0000 (13:03 +0000)] 
PR libstdc++/70966 fix lifetime bug for default resource

PR libstdc++/70966
* include/experimental/memory_resource (__get_default_resource): Use
placement new to create an object with dynamic storage duration.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262943 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR testsuite/86649
jakub [Tue, 24 Jul 2018 10:24:00 +0000 (10:24 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262942 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDaily bump.
gccadmin [Tue, 24 Jul 2018 00:16:33 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262940 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago* inclhack.def (aix_unistd): New.
dje [Mon, 23 Jul 2018 20:51:50 +0000 (20:51 +0000)] 
* inclhack.def (aix_unistd): New.
* fixincl.x: Regenerate.
* tests/base/unistd.h [AIX_UNISTD_CHECK]: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262936 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR libstdc++/70940 optimize pmr::resource_adaptor for allocators using malloc
redi [Mon, 23 Jul 2018 19:40:28 +0000 (19:40 +0000)] 
PR libstdc++/70940 optimize pmr::resource_adaptor for allocators using malloc

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262935 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agogcc/testsuite/ChangeLog:
carll [Mon, 23 Jul 2018 16:16:41 +0000 (16:16 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262934 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agogcc:
edlinger [Mon, 23 Jul 2018 13:23:51 +0000 (13:23 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262933 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de>
edlinger [Mon, 23 Jul 2018 13:20:38 +0000 (13:20 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262932 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de>
edlinger [Mon, 23 Jul 2018 12:48:48 +0000 (12:48 +0000)] 
2018-07-23  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        hsa-dump.c (dump_hsa_symbol): Avoid out of scope access to buf.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262931 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agors6000: Improve vsx_init_v4si
segher [Mon, 23 Jul 2018 11:27:38 +0000 (11:27 +0000)] 
rs6000: Improve vsx_init_v4si

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262930 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agors6000: Generate rl*imi for memory some more
segher [Mon, 23 Jul 2018 11:25:28 +0000 (11:25 +0000)] 
rs6000: Generate rl*imi for memory some more

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262929 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR c++/86569
jakub [Mon, 23 Jul 2018 07:48:56 +0000 (07:48 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262928 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDaily bump.
gccadmin [Mon, 23 Jul 2018 00:16:33 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262927 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR bootstrap/86621 - 'alloca' bound is unknown in tree-vect-slp.c:1437:16
msebor [Sun, 22 Jul 2018 21:09:32 +0000 (21:09 +0000)] 
PR bootstrap/86621 - 'alloca' bound is unknown in tree-vect-slp.c:1437: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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262923 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * doc/gcov.texi (Invoking Gcov): Editorial changes.
gerald [Sun, 22 Jul 2018 08:39:57 +0000 (08:39 +0000)] 
* doc/gcov.texi (Invoking Gcov): Editorial changes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262922 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDaily bump.
gccadmin [Sun, 22 Jul 2018 00:16:18 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262921 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDaily bump.
gccadmin [Sat, 21 Jul 2018 00:16:31 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262917 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agolibcpp: remove redundant parameter from rich_location::set_range
dmalcolm [Fri, 20 Jul 2018 21:39:14 +0000 (21:39 +0000)] 
libcpp: remove redundant parameter from rich_location::set_range

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262913 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR middle-end/82063 - issues with arguments enabled by -Wall
msebor [Fri, 20 Jul 2018 21:19:49 +0000 (21:19 +0000)] 
PR middle-end/82063 - issues with arguments enabled by -Wall

gcc/c-family/ChangeLog:
* gcc/c-family/c.opt (-Warray-bounds): Remove redundant -Wall.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262912 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR middle-end/82063
msebor [Fri, 20 Jul 2018 21:18:31 +0000 (21:18 +0000)] 
PR middle-end/82063

gcc/testsuite/ChangeLog:

* gcc/testsuite/c-c++-common/pr68833-1.c: Adjust.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262911 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR middle-end/82063 - issues with arguments enabled by -Wall
msebor [Fri, 20 Jul 2018 20:51:20 +0000 (20:51 +0000)] 
PR middle-end/82063 - issues with arguments enabled by -Wall

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262910 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-07-20 Andrew Benson <abenson@carnegiescience.edu>
janus [Fri, 20 Jul 2018 20:00:42 +0000 (20:00 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262909 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago compiler: do order_evaluations before remove_shortcuts
ian [Fri, 20 Jul 2018 19:56:21 +0000 (19:56 +0000)] 
compiler: do order_evaluations before remove_shortcuts

    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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262908 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoGive up the inlining expansion for strcmp/strncmp/memcmp on a target
qinzhao [Fri, 20 Jul 2018 18:18:25 +0000 (18:18 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262907 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR tree-optimization/86613 - missing -Warray-bounds on a wide string access due to...
msebor [Fri, 20 Jul 2018 16:38:43 +0000 (16:38 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262906 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd "-fsave-optimization-record"
dmalcolm [Fri, 20 Jul 2018 15:37:23 +0000 (15:37 +0000)] 
Add "-fsave-optimization-record"

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262905 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR libstdc++/86595 add missing noexcept
redi [Fri, 20 Jul 2018 11:52:54 +0000 (11:52 +0000)] 
PR libstdc++/86595 add missing noexcept

PR libstdc++/86595
* include/bits/fs_dir.h (directory_entry::refresh(error_code&)): Add
noexcept.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262904 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoUse default visibility to work around clang -fvisibility-inlines-hidden bug
redi [Fri, 20 Jul 2018 11:24:55 +0000 (11:24 +0000)] 
Use default visibility to work around clang -fvisibility-inlines-hidden bug

Clang (including trunk and many older versions) incorrectly marks static
local variables (__tag) hidden when -fvisibility-inlines-hidden is used.
This can lead to multiple instances of __tag when shares objects are used.

2018-07-20  Fangrui Song  <maskray@google.com>

* include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Use
_GLIBCXX_VISIBILITY(default).

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262903 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR libstdc++/86603 Move __cpp_lib_list_remove_return_type macro
redi [Fri, 20 Jul 2018 11:24:38 +0000 (11:24 +0000)] 
PR libstdc++/86603 Move __cpp_lib_list_remove_return_type macro

This should only be defined for C++2a not C++17.

PR libstdc++/86603
* include/std/version: Move __cpp_lib_list_remove_return_type macro.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262902 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-07-20 Richard Biener <rguenther@suse.de>
rguenth [Fri, 20 Jul 2018 11:13:47 +0000 (11:13 +0000)] 
2018-07-20  Richard Biener  <rguenther@suse.de>

PR debug/86585
* dwarf2out.c (dwarf2out_die_ref_for_decl): Test in_lto_p
to cover -flto-partition=none.

lto/
* lto.c (unify_scc): Before we throw away an SCC see if we
can amend prevailing single-entry SCC with debug refs.

* g++.dg/lto/pr86585_0.C: New testcase.
* g++.dg/lto/pr86585_1.C: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262901 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoRemove unused code.
marxin [Fri, 20 Jul 2018 11:00:56 +0000 (11:00 +0000)] 
Remove unused code.

2018-07-20  Martin Liska  <mliska@suse.cz>

* tree.h (DECL_LOCATION_RANGE): Remove unused macro.
(get_decl_source_range): Remove unused function.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262900 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-07-20 Richard Biener <rguenther@suse.de>
rguenth [Fri, 20 Jul 2018 07:18:35 +0000 (07:18 +0000)] 
2018-07-20  Richard Biener  <rguenther@suse.de>

* tree-ssa-sccvn.h (struct vn_nary_op_s): Add next member.
(struct vn_phi_s): Likewise.
(struct vn_reference_s): Likewise.
* tree-ssa-sccvn.c (vn_nary_op_hasher::equal): Add shortcut
for searching the slot of an entry known to be in the hash itself.
(vn_phi_hasher::equal): Likewise.
(vn_reference_hasher::equal): Likewise.
(last_inserted_ref, last_inserted_phi, last_inserted_nary): New
globals.
(optimistic_info, current_info): Remove, keeping only valid_info.
(vn_reference_lookup_1): Remove fallback lookup.
(vn_reference_lookup_2): Likewise.
(vn_nary_op_lookup_1): Likewise.
(vn_phi_lookup): Likewise.
(vn_nary_build_or_lookup_1): Make sure to not chain the built
hash element.
(vn_reference_insert): Adjust, chain the inserted hash element
at last_inserted_ref.
(vn_reference_insert_pieces): Likewise.
(visit_reference_op_call): Likewise.
(vn_nary_op_insert_into): Chain the inserted hash element at
last_inserted_nary.
(vn_nary_op_insert_pieces): Adjust.
(vn_nary_op_insert): Likewise.
(vn_nary_op_insert_stmt): Likewise.
(vn_phi_insert): Adjust, chain the inserted hash element at
last_inserted_phi.
(process_scc): Remove clearing and copying the optimistic
table.  Instead remove elements inserted during an optimistic
iteration from the single table we maintain.
(init_scc_vn): Adjust.
(free_scc_vn): Likewise.
(sccvn_dom_walker::record_cond): Likewise.
(sccvn_dom_walker::after_dom_children): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262899 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago* MAINTAINERS (m32c, msp43, rl78, libiberty, build): Remove myself
dj [Fri, 20 Jul 2018 02:01:30 +0000 (02:01 +0000)] 
* MAINTAINERS (m32c, msp43, rl78, libiberty, build): Remove myself
as maintainer.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262898 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDaily bump.
gccadmin [Fri, 20 Jul 2018 00:16:29 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262897 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR tree-optimization/84047 - missing -Warray-bounds on an out-of-bounds index into...
msebor [Thu, 19 Jul 2018 23:36:34 +0000 (23:36 +0000)] 
PR tree-optimization/84047 - missing -Warray-bounds on an out-of-bounds index into an array
PR tree-optimization/83776 - missing -Warray-bounds indexing past the end of a string literal

gcc/ChangeLog:

PR tree-optimization/84047
PR tree-optimization/83776
* tree-vrp.c (vrp_prop::check_mem_ref): New function.
(check_array_bounds): Call it.

gcc/testsuite/ChangeLog:

PR tree-optimization/83776
PR tree-optimization/84047
* gcc.dg/Warray-bounds-29.c: New test.
* gcc.dg/Warray-bounds-30.c: New test.
* gcc.dg/Warray-bounds-31.c: New test.
* gcc.dg/Warray-bounds-32.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262893 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agogcc/ChangeLog:
msebor [Thu, 19 Jul 2018 22:12:06 +0000 (22:12 +0000)] 
gcc/ChangeLog:

* align.h (align_flags): Use member initialization.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262892 138bc75d-0d04-0410-961f-82ee72b054a4