Files
gcc-reflection/libgomp/testsuite/libgomp.c++/target-std__valarray-1.C
supers1ngular 382edf047e openmp: Bump Version from 4.5 to 5.2 (2/4)
Implements the OpenMP 5.2 C and C++ deprecations. Uses the warning
established in patch 1/4, -Wdeprecated-openmp, for said deprecations.
Not implemented is 'uses_allocators', since the base is not yet in
mainline, along with the relaxing of constraints for the interop
construct, since this is not a deprecation. Additionally does not
deprecate 'destroy' with no arguments on depobj construct, since
this was undeprecated in OpenMP 6.0. Adds new tests.

gcc/c/ChangeLog:

	* c-parser.cc (c_parser_omp_clause_reduction): Deprecate '-'
	operator for reductions.
	(c_parser_omp_clause_linear): Deprecate modifiers with parens.
	(c_parser_omp_clause_depend): Deprecate 'sink' and 'source'
	modifiers for 'depend' clause.
	(c_parser_omp_clause_map): Map clause modifiers comma-separated.
	(c_parser_omp_declare_target): Deprecate synonymous omp declare
	target for omp begin declare target. Deprecate 'to' clause.
	(c_parser_omp_metadirective): Deprecate default clause on
	metadirectives.

gcc/cp/ChangeLog:

	* parser.cc (cp_parser_omp_clause_reduction): Deprecate '-'
	operator.
	(cp_parser_omp_clause_linear): Deprecate modifiers with parens.
	(cp_parser_omp_clause_depend): Deprecate sink and source.
	(cp_parser_omp_clause_map): Map clause modifiers
	comma-separated.
	(cp_parser_omp_declare_target): Deprecate synonymous omp declare
	target for omp begin declare target. Deprecate to clause.
	(cp_parser_omp_metadirective): Deprecate default clause on
	metadirectives.

libgomp/ChangeLog:

	* testsuite/libgomp.c++/declare_target-1.C: Suppress warnings.
	* testsuite/libgomp.c++/depobj-1.C: Ditto.
	* testsuite/libgomp.c++/doacross-1.C: Ditto.
	* testsuite/libgomp.c++/for-15.C: Ditto.
	* testsuite/libgomp.c++/for-24.C: Ditto.
	* testsuite/libgomp.c++/pr101544-1-O0.C: Ditto.
	* testsuite/libgomp.c++/pr101544-1.C: Ditto.
	* testsuite/libgomp.c++/pr96835-1-O0.C: Ditto.
	* testsuite/libgomp.c++/pr96835-1.C: Ditto.
	* testsuite/libgomp.c++/static-aggr-constructor-destructor-1.C: Ditto.
	* testsuite/libgomp.c++/static-aggr-constructor-destructor-2.C: Ditto.
	* testsuite/libgomp.c++/static-aggr-constructor-destructor-3.C: Ditto.
	* testsuite/libgomp.c++/target-13.C: Ditto.
	* testsuite/libgomp.c++/target-cdtor-1.C: Ditto.
	* testsuite/libgomp.c++/target-cdtor-2.C: Ditto.
	* testsuite/libgomp.c++/target-std__array-concurrent-usm.C: Ditto.
	* testsuite/libgomp.c++/target-std__array-concurrent.C: Ditto.
	* testsuite/libgomp.c++/target-std__cmath.C: Ditto.
	* testsuite/libgomp.c++/target-std__complex.C: Ditto.
	* testsuite/libgomp.c++/target-std__deque-concurrent-usm.C: Ditto.
	* testsuite/libgomp.c++/target-std__deque-concurrent.C: Ditto.
	* testsuite/libgomp.c++/target-std__forward_list-concurrent-usm.C: Ditto.
	* testsuite/libgomp.c++/target-std__forward_list-concurrent.C: Ditto.
	* testsuite/libgomp.c++/target-std__list-concurrent-usm.C: Ditto.
	* testsuite/libgomp.c++/target-std__list-concurrent.C: Ditto.
	* testsuite/libgomp.c++/target-std__numbers.C: Ditto.
	* testsuite/libgomp.c++/target-std__span-concurrent-usm.C: Ditto.
	* testsuite/libgomp.c++/target-std__span-concurrent.C: Ditto.
	* testsuite/libgomp.c++/target-std__valarray-1.C: Ditto.
	* testsuite/libgomp.c++/target-std__valarray-concurrent-usm.C: Ditto.
	* testsuite/libgomp.c++/target-std__valarray-concurrent.C: Ditto.
	* testsuite/libgomp.c++/target-std__vector-concurrent-usm.C: Ditto.
	* testsuite/libgomp.c++/target-std__vector-concurrent.C: Ditto.
	* testsuite/libgomp.c-c++-common/declare_target-1.c: Ditto.
	* testsuite/libgomp.c-c++-common/depend-2.c: Ditto.
	* testsuite/libgomp.c-c++-common/depobj-1.c: Ditto.
	* testsuite/libgomp.c-c++-common/for-11.c: Ditto.
	* testsuite/libgomp.c-c++-common/for-12.c: Ditto.
	* testsuite/libgomp.c-c++-common/for-16.c: Ditto.
	* testsuite/libgomp.c-c++-common/for-3.c: Ditto.
	* testsuite/libgomp.c-c++-common/for-5.c: Ditto.
	* testsuite/libgomp.c-c++-common/for-6.c: Ditto.
	* testsuite/libgomp.c-c++-common/for-9.c: Ditto.
	* testsuite/libgomp.c-c++-common/function-not-offloaded.c: Ditto.
	* testsuite/libgomp.c-c++-common/metadirective-1.c: Ditto.
	* testsuite/libgomp.c-c++-common/metadirective-2.c: Ditto.
	* testsuite/libgomp.c-c++-common/metadirective-3.c: Ditto.
	* testsuite/libgomp.c-c++-common/metadirective-5.c: Ditto.
	* testsuite/libgomp.c-c++-common/monotonic-1.c: Ditto.
	* testsuite/libgomp.c-c++-common/monotonic-2.c: Ditto.
	* testsuite/libgomp.c-c++-common/pr100059-1.c: Ditto.
	* testsuite/libgomp.c-c++-common/pr66199-2.c: Ditto.
	* testsuite/libgomp.c-c++-common/pr66199-4.c: Ditto.
	* testsuite/libgomp.c-c++-common/pr66199-5.c: Ditto.
	* testsuite/libgomp.c-c++-common/pr66199-6.c: Ditto.
	* testsuite/libgomp.c-c++-common/pr66199-7.c: Ditto.
	* testsuite/libgomp.c-c++-common/pr66199-8.c: Ditto.
	* testsuite/libgomp.c-c++-common/pr66199-9.c: Ditto.
	* testsuite/libgomp.c-c++-common/ptr-attach-1.c: Ditto.
	* testsuite/libgomp.c-c++-common/reverse-offload-1.c: Ditto.
	* testsuite/libgomp.c-c++-common/target-1.c: Ditto.
	* testsuite/libgomp.c-c++-common/target-10.c: Ditto.
	* testsuite/libgomp.c-c++-common/target-40.c: Ditto.
	* testsuite/libgomp.c-c++-common/target-abi-struct-1-O0.c: Ditto.
	* testsuite/libgomp.c-c++-common/target-abi-struct-1.c: Ditto.
	* testsuite/libgomp.c-c++-common/target-cdtor-1.c: Ditto.
	* testsuite/libgomp.c-c++-common/target-same-name-1.c: Ditto.
	* testsuite/libgomp.c-c++-common/task-reduction-14.c: Ditto.
	* testsuite/libgomp.c-c++-common/variable-not-offloaded.c: Ditto.
	* testsuite/libgomp.c/declare-variant-3.c: Ditto.
	* testsuite/libgomp.c/declare-variant-4.c: Ditto.
	* testsuite/libgomp.c/doacross-1.c: Ditto.
	* testsuite/libgomp.c/doacross-2.c: Ditto.
	* testsuite/libgomp.c/doacross-3.c: Ditto.
	* testsuite/libgomp.c/examples-4/async_target-1.c: Ditto.
	* testsuite/libgomp.c/examples-4/declare_target-1.c: Ditto.
	* testsuite/libgomp.c/examples-4/declare_target-3.c: Ditto.
	* testsuite/libgomp.c/examples-4/declare_target-4.c: Ditto.
	* testsuite/libgomp.c/examples-4/declare_target-5.c: Ditto.
	* testsuite/libgomp.c/max_vf-1.c: Ditto.
	* testsuite/libgomp.c/pr81778.c: Ditto.
	* testsuite/libgomp.c/pr86660.c: Ditto.
	* testsuite/libgomp.c/reduction-4.c: Ditto.
	* testsuite/libgomp.c/switch-conversion.c: Ditto.
	* testsuite/libgomp.c/target-26.c: Ditto.
	* testsuite/libgomp.c/target-28.c: Ditto.
	* testsuite/libgomp.c/target-30.c: Ditto.
	* testsuite/libgomp.c/target-32.c: Ditto.
	* testsuite/libgomp.c/target-35.c: Ditto.
	* testsuite/libgomp.c/target-38.c: Ditto.
	* testsuite/libgomp.c/target-39.c: Ditto.
	* testsuite/libgomp.c/target-9.c: Ditto.
	* testsuite/libgomp.c/target-link-1.c: Ditto.
	* testsuite/libgomp.c/target-teams-1.c: Ditto.
	* testsuite/libgomp.c/thread-limit-2.c: Ditto.
	* testsuite/libgomp.oacc-c-c++-common/vred2d-128.c: Ditto.

gcc/testsuite/ChangeLog:

	* c-c++-common/gomp/Wparentheses-2.c: Suppress warnings.
	* c-c++-common/gomp/attrs-metadirective-1.c: Ditto.
	* c-c++-common/gomp/attrs-metadirective-2.c: Ditto.
	* c-c++-common/gomp/attrs-metadirective-3.c: Ditto.
	* c-c++-common/gomp/attrs-metadirective-4.c: Ditto.
	* c-c++-common/gomp/attrs-metadirective-5.c: Ditto.
	* c-c++-common/gomp/attrs-metadirective-8.c: Ditto.
	* c-c++-common/gomp/begin-declare-target-1.c: Ditto.
	* c-c++-common/gomp/begin-declare-target-2.c: Ditto.
	* c-c++-common/gomp/clauses-3.c: Ditto.
	* c-c++-common/gomp/declare-target-1.c: Ditto.
	* c-c++-common/gomp/declare-target-2.c: Ditto.
	* c-c++-common/gomp/declare-target-3.c: Ditto.
	* c-c++-common/gomp/declare-target-4.c: Ditto.
	* c-c++-common/gomp/declare-target-5.c: Ditto.
	* c-c++-common/gomp/declare-target-7.c: Ditto.
	* c-c++-common/gomp/declare-target-indirect-1.c: Ditto.
	* c-c++-common/gomp/declare-target-indirect-2.c: Ditto.
	* c-c++-common/gomp/declare-variant-10.c: Ditto.
	* c-c++-common/gomp/declare-variant-8.c: Ditto.
	* c-c++-common/gomp/defaultmap-2.c: Ditto.
	* c-c++-common/gomp/defaultmap-3.c: Ditto.
	* c-c++-common/gomp/depend-iterator-2.c: Ditto.
	* c-c++-common/gomp/depobj-1.c: Ditto.
	* c-c++-common/gomp/directive-1.c: Ditto.
	* c-c++-common/gomp/distribute-1.c: Ditto.
	* c-c++-common/gomp/doacross-1.c: Ditto.
	* c-c++-common/gomp/doacross-2.c: Ditto.
	* c-c++-common/gomp/doacross-3.c: Ditto.
	* c-c++-common/gomp/doacross-4.c: Ditto.
	* c-c++-common/gomp/doacross-8.c: Ditto.
	* c-c++-common/gomp/linear-1.c: Ditto.
	* c-c++-common/gomp/linear-2.c: Ditto.
	* c-c++-common/gomp/linear-3.c: Ditto.
	* c-c++-common/gomp/loop-6.c: Ditto.
	* c-c++-common/gomp/map-1.c: Ditto.
	* c-c++-common/gomp/map-3.c: Ditto.
	* c-c++-common/gomp/map-6.c: Ditto.
	* c-c++-common/gomp/metadirective-1.c: Ditto.
	* c-c++-common/gomp/metadirective-2.c: Ditto.
	* c-c++-common/gomp/metadirective-3.c: Ditto.
	* c-c++-common/gomp/metadirective-4.c: Ditto.
	* c-c++-common/gomp/metadirective-5.c: Ditto.
	* c-c++-common/gomp/metadirective-8.c: Ditto.
	* c-c++-common/gomp/metadirective-construct.c: Ditto.
	* c-c++-common/gomp/metadirective-device.c: Ditto.
	* c-c++-common/gomp/metadirective-target-device-1.c: Ditto.
	* c-c++-common/gomp/metadirective-target-device-2.c: Ditto.
	* c-c++-common/gomp/order-2.c: Ditto.
	* c-c++-common/gomp/ordered-3.c: Ditto.
	* c-c++-common/gomp/ordered-5.c: Ditto.
	* c-c++-common/gomp/pr102640.c: Ditto.
	* c-c++-common/gomp/pr106836.c: Ditto.
	* c-c++-common/gomp/pr120180-1.c: Ditto.
	* c-c++-common/gomp/pr88203-1.c: Ditto.
	* c-c++-common/gomp/pr88203-2.c: Ditto.
	* c-c++-common/gomp/pr88203-3.c: Ditto.
	* c-c++-common/gomp/pr91401-2.c: Ditto.
	* c-c++-common/gomp/pr91987.c: Ditto.
	* c-c++-common/gomp/reverse-offload-1.c: Ditto.
	* c-c++-common/gomp/schedule-modifiers-1.c: Ditto.
	* c-c++-common/gomp/sink-1.c: Ditto.
	* c-c++-common/gomp/sink-2.c: Ditto.
	* c-c++-common/gomp/sink-3.c: Ditto.
	* c-c++-common/gomp/sink-4.c: Ditto.
	* c-c++-common/gomp/sink-5.c: Ditto.
	* c-c++-common/gomp/target-teams-1.c: Ditto.
	* g++.dg/gomp/attrs-12.C: Ditto.
	* g++.dg/gomp/attrs-5.C: Ditto.
	* g++.dg/gomp/attrs-9.C: Ditto.
	* g++.dg/gomp/clause-3.C: Ditto.
	* g++.dg/gomp/declare-simd-3.C: Ditto.
	* g++.dg/gomp/declare-simd-4.C: Ditto.
	* g++.dg/gomp/declare-simd-6.C: Ditto.
	* g++.dg/gomp/declare-simd-7.C: Ditto.
	* g++.dg/gomp/declare-simd-8.C: Ditto.
	* g++.dg/gomp/declare-target-1.C: Ditto.
	* g++.dg/gomp/declare-target-2.C: Ditto.
	* g++.dg/gomp/declare-target-3.C: Ditto.
	* g++.dg/gomp/declare-target-indirect-1.C: Ditto.
	* g++.dg/gomp/depend-iterator-2.C: Ditto.
	* g++.dg/gomp/depobj-1.C: Ditto.
	* g++.dg/gomp/doacross-2.C: Ditto.
	* g++.dg/gomp/linear-1.C: Ditto.
	* g++.dg/gomp/linear-2.C: Ditto.
	* g++.dg/gomp/linear-3.C: Ditto.
	* g++.dg/gomp/linear-5.C: Ditto.
	* g++.dg/gomp/map-1.C: Ditto.
	* g++.dg/gomp/pr118876.C: Ditto.
	* g++.dg/gomp/pr119370.C: Ditto.
	* g++.dg/gomp/sink-1.C: Ditto.
	* g++.dg/gomp/sink-2.C: Ditto.
	* g++.dg/gomp/sink-3.C: Ditto.
	* g++.dg/gomp/target-simd-clone-1.C: Ditto.
	* g++.dg/gomp/target-simd-clone-2.C: Ditto.
	* g++.dg/gomp/target-teams-1.C: Ditto.
	* g++.dg/gomp/udr-5.C: Ditto.
	* gcc.dg/gomp/attrs-12.c: Ditto.
	* gcc.dg/gomp/attrs-5.c: Ditto.
	* gcc.dg/gomp/attrs-9.c: Ditto.
	* gcc.dg/gomp/clause-1.c: Ditto.
	* gcc.dg/gomp/declare-simd-3.c: Ditto.
	* gcc.dg/gomp/linear-1.c: Ditto.
	* gcc.dg/gomp/metadirective-1.c: Ditto.
	* gcc.dg/gomp/pr104757.c: Ditto.
	* gcc.dg/gomp/sink-fold-1.c: Ditto.
	* gcc.dg/gomp/sink-fold-2.c: Ditto.
	* gcc.dg/gomp/sink-fold-3.c: Ditto.
	* gcc.dg/gomp/target-simd-clone-1.c: Ditto.
	* gcc.dg/gomp/target-simd-clone-2.c: Ditto.
	* gcc.dg/gomp/target-simd-clone-3.c: Ditto.
	* gcc.dg/gomp/target-simd-clone-4.c: Ditto.
	* gcc.dg/gomp/target-simd-clone-5.c: Ditto.
	* gcc.dg/gomp/target-simd-clone-6.c: Ditto.
	* gcc.dg/gomp/target-simd-clone-7.c: Ditto.
	* gcc.dg/gomp/target-simd-clone-8.c: Ditto.
	* gcc.dg/gomp/workshare-reduction-55.c: Ditto.
	* gcc.dg/gomp/workshare-reduction-56.c: Ditto.
	* gcc.dg/gomp/workshare-reduction-57.c: Ditto.
	* gcc.dg/gomp/workshare-reduction-58.c: Ditto.
	* c-c++-common/gomp/52-deps.c: New test.
	* g++.dg/gomp/map-csm-dep.C: New test.
	* gcc.dg/gomp/map-csm-dep.c: New test.
2025-12-11 07:47:44 -08:00

180 lines
4.8 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// { dg-additional-options -std=c++20 }
// { dg-output-file target-std__valarray-1.output }
// { dg-additional-options "-Wno-deprecated-openmp" }
#include <valarray>
#include <ostream>
#include <sstream>
/*TODO Work around PR118484 "ICE during IPA pass: cp, segfault in determine_versionability ipa-cp.cc:467".
We can't:
#pragma omp declare target(std::basic_streambuf<char, std::char_traits<char>>::basic_streambuf)
... because:
error: overloaded function name std::basic_streambuf<char>::__ct in clause enter
Therefore, use dummy classes in '#pragma omp declare target':
*/
#pragma omp declare target
// For 'std::basic_streambuf<char, std::char_traits<char> >::basic_streambuf':
class dummy_basic_streambuf__char
: public std::basic_streambuf<char>
{
public:
dummy_basic_streambuf__char() {}
};
// For 'std::basic_ios<char, std::char_traits<char> >::basic_ios()':
class dummy_basic_ios__char
: public std::basic_ios<char>
{
public:
dummy_basic_ios__char() {}
};
#pragma omp end declare target
int main()
{
// Due to PR120021 "Offloading vs. C++ 'std::initializer_list'", we can't construct these on the device.
std::initializer_list<int> v1_i = {10, 20, 30, 40, 50};
const int *v1_i_data = std::data(v1_i);
size_t v1_i_size = v1_i.size();
std::initializer_list<int> v2_i = {5, 4, 3, 2, 1};
const int *v2_i_data = std::data(v2_i);
size_t v2_i_size = v2_i.size();
std::initializer_list<int> shiftData_i = {1, 2, 3, 4, 5};
const int *shiftData_i_data = std::data(shiftData_i);
size_t shiftData_i_size = shiftData_i.size();
#pragma omp target \
defaultmap(none) \
map(to: v1_i_data[ :v1_i_size], v1_i_size, \
v2_i_data[ :v2_i_size], v2_i_size, \
shiftData_i_data[ :shiftData_i_size], shiftData_i_size)
{
/* Manually set up a buffer we can stream into, similar to 'cout << [...]', and print it at the end of region. */
std::stringbuf out_b;
std::ostream out(&out_b);
std::valarray<int> v1(v1_i_data, v1_i_size);
out << "\nv1:";
for (auto val : v1)
out << " " << val;
std::valarray<int> v2(v2_i_data, v2_i_size);
out << "\nv2:";
for (auto val : v2)
out << " " << val;
std::valarray<int> sum = v1 + v2;
out << "\nv1 + v2:";
for (auto val : sum)
out << " " << val;
std::valarray<int> diff = v1 - v2;
out << "\nv1 - v2:";
for (auto val : diff)
out << " " << val;
std::valarray<int> product = v1 * v2;
out << "\nv1 * v2:";
for (auto val : product)
out << " " << val;
std::valarray<int> quotient = v1 / v2;
out << "\nv1 / v2:";
for (auto val : quotient)
out << " " << val;
std::valarray<int> squares = pow(v1, 2);
out << "\npow(v1, 2):";
for (auto val : squares)
out << " " << val;
std::valarray<int> sinhs = sinh(v2);
out << "\nsinh(v2):";
for (auto val : sinhs)
out << " " << val;
std::valarray<int> logs = log(v1 * v2);
out << "\nlog(v1 * v2):";
for (auto val : logs)
out << " " << val;
std::valarray<int> data(12);
for (size_t i = 0; i < data.size(); ++i)
data[i] = i;
out << "\nOriginal array:";
for (auto val : data)
out << " " << val;
std::slice slice1(2, 5, 1);
std::valarray<int> sliced1 = data[slice1];
out << "\nSlice(2, 5, 1):";
for (auto val : sliced1)
out << " " << val;
std::slice slice2(1, 4, 3);
std::valarray<int> sliced2 = data[slice2];
out << "\nSlice(1, 4, 3):";
for (auto val : sliced2)
out << " " << val;
data[slice1] = 99;
out << "\nArray after slice modification:";
for (auto val : data)
out << " " << val;
std::valarray<bool> mask = (v1 > 20);
out << "\nElements of v1 > 20:";
for (size_t i = 0; i < v1.size(); ++i)
{
if (mask[i])
out << " " << v1[i];
}
std::valarray<int> masked = v1[mask];
out << "\nMasked array:";
for (auto val : masked)
out << " " << val;
std::valarray<int> shiftData(shiftData_i_data, shiftData_i_size);
out << "\nOriginal shiftData:";
for (auto val : shiftData)
out << " " << val;
std::valarray<int> shifted = shiftData.shift(2);
out << "\nshift(2):";
for (auto val : shifted)
out << " " << val;
std::valarray<int> cshifted = shiftData.cshift(-1);
out << "\ncshift(-1):";
for (auto val : cshifted)
out << " " << val;
out << "\nSum(v1): " << v1.sum();
out << "\nMin(v1): " << v1.min();
out << "\nMax(v1): " << v1.max();
out << "\n";
/* Terminate with a NUL. Otherwise, we'd have to use:
__builtin_printf("%.*s", (int) out_b_sv.size(), out_b_sv.data());
... which nvptx 'printf', as implemented via PTX 'vprintf', doesn't support (TODO). */
out << '\0';
std::string_view out_b_sv = out_b.view();
__builtin_printf("%s", out_b_sv.data());
}
return 0;
}