From: Bernd Edlinger Date: Wed, 21 Sep 2016 13:03:59 +0000 (+0000) Subject: re PR tree-optimization/77550 (std::deque with -O3 has infinite std::distance) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=44fc7854813cc53c709920c849bc06fd0afc0ff2;p=gcc.git re PR tree-optimization/77550 (std::deque with -O3 has infinite std::distance) gcc: 2016-09-21 Bernd Edlinger PR tree-optimization/77550 * tree-vect-stmts.c (create_array_ref): Change parameters. (get_group_alias_ptr_type): New function. (vectorizable_store, vectorizable_load): Use get_group_alias_ptr_type. testsuite: 2016-09-21 Bernd Edlinger PR tree-optimization/77550 * g++.dg/pr77550.C: New test. From-SVN: r240313 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 86b0802ddd3..7fb1058a690 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2016-09-21 Bernd Edlinger + + PR tree-optimization/77550 + * tree-vect-stmts.c (create_array_ref): Change parameters. + (get_group_alias_ptr_type): New function. + (vectorizable_store, vectorizable_load): Use get_group_alias_ptr_type. + 2016-09-21 Marek Polacek * gimple-ssa-sprintf.c (pass_sprintf_length::compute_format_length): diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bc9d2b01a12..fb04ac3f747 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-09-21 Bernd Edlinger + + PR tree-optimization/77550 + * g++.dg/pr77550.C: New test. + 2016-09-21 Georg-Johann Lay PR target/77326 diff --git a/gcc/testsuite/g++.dg/pr77550.C b/gcc/testsuite/g++.dg/pr77550.C new file mode 100644 index 00000000000..d13241abb52 --- /dev/null +++ b/gcc/testsuite/g++.dg/pr77550.C @@ -0,0 +1,295 @@ +// { dg-do run } +// { dg-options "-std=c++14 -O3" } + +namespace std { +typedef int size_t; +inline namespace __cxx11 {} +template using _Require = void; +template using __void_t = void; +template class, typename...> +struct A { + using type = int; +}; +template class _Op, + typename... _Args> +struct A<_Default, __void_t<_Op<_Args...>>, _Op, _Args...> { + using type = _Op<_Args...>; +}; +template class _Op, + typename... _Args> +using __detected_or = A<_Default, void, _Op, _Args...>; +template class _Op, + typename... _Args> +using __detected_or_t = typename __detected_or<_Default, _Op, _Args...>::type; +template