range-for8.C: New test.
* g++.dg/cpp2a/range-for8.C: New test. * g++.dg/cpp2a/range-for9.C: New test. * g++.dg/cpp2a/range-for10.C: New test. From-SVN: r260625
This commit is contained in:
parent
89453706e0
commit
622075181d
@ -1,3 +1,9 @@
|
||||
2018-05-23 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
* g++.dg/cpp2a/range-for8.C: New test.
|
||||
* g++.dg/cpp2a/range-for9.C: New test.
|
||||
* g++.dg/cpp2a/range-for10.C: New test.
|
||||
|
||||
2017-05-23 Segher Boessenkool <segher@kernel.crashing.org>
|
||||
|
||||
* lib/target-supports.exp (check_effective_target_be): New.
|
||||
|
24
gcc/testsuite/g++.dg/cpp2a/range-for10.C
Normal file
24
gcc/testsuite/g++.dg/cpp2a/range-for10.C
Normal file
@ -0,0 +1,24 @@
|
||||
// P0614R1
|
||||
// { dg-do run }
|
||||
// { dg-options "-std=c++2a" }
|
||||
|
||||
struct A { int i; long long j; } a[64];
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
A b = { 1, 2 };
|
||||
for (auto & [ u, v ] : a)
|
||||
{
|
||||
u = 2;
|
||||
v = 3;
|
||||
}
|
||||
|
||||
for (auto [x, y] = b; auto [ u, v ] : a)
|
||||
if (y + u != x + v)
|
||||
__builtin_abort ();
|
||||
|
||||
for (auto [x, y] = b; auto & [ u, v ] : a)
|
||||
if (y + u != x + v)
|
||||
__builtin_abort ();
|
||||
}
|
37
gcc/testsuite/g++.dg/cpp2a/range-for8.C
Normal file
37
gcc/testsuite/g++.dg/cpp2a/range-for8.C
Normal file
@ -0,0 +1,37 @@
|
||||
// P0614R1
|
||||
// { dg-do run }
|
||||
// { dg-options "-std=c++2a" }
|
||||
|
||||
struct A { int i; long long j; } a[64];
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
for (int i = 0; auto &x : a)
|
||||
{
|
||||
x.i = i;
|
||||
x.j = 2 * i++;
|
||||
}
|
||||
for (auto & [ x, y ] : a)
|
||||
{
|
||||
x += 2;
|
||||
y += 3;
|
||||
}
|
||||
for (int i = 0; const auto [ u, v ] : a)
|
||||
{
|
||||
if (u != i + 2 || v != 2 * i++ + 3)
|
||||
__builtin_abort ();
|
||||
}
|
||||
for (int i = 0; auto [ x, y ] : a)
|
||||
{
|
||||
x += 4;
|
||||
y += 5;
|
||||
if (x != i + 6 || y != 2 * i++ + 8)
|
||||
__builtin_abort ();
|
||||
}
|
||||
for (int i = 0; const auto x : a)
|
||||
{
|
||||
if (x.i != i + 2 || x.j != 2 * i++ + 3)
|
||||
__builtin_abort ();
|
||||
}
|
||||
}
|
30
gcc/testsuite/g++.dg/cpp2a/range-for9.C
Normal file
30
gcc/testsuite/g++.dg/cpp2a/range-for9.C
Normal file
@ -0,0 +1,30 @@
|
||||
// P0614R1
|
||||
// { dg-do run }
|
||||
// { dg-options "-std=c++2a" }
|
||||
|
||||
struct A { int i, j; };
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
A a = { .i = 2, .j = 3 };
|
||||
int arr[] = { 1, 1, 1 };
|
||||
|
||||
for (auto & [ x, y ] = a; auto z : arr)
|
||||
if (x + z != 3 || y + z != 4)
|
||||
__builtin_abort ();
|
||||
|
||||
for (int d = 1; auto &z : arr)
|
||||
z += d;
|
||||
|
||||
for (const auto [ x, y ] = a; auto z : arr)
|
||||
if (x + z != 4 || y + z != 5)
|
||||
__builtin_abort ();
|
||||
|
||||
for (int d = 1; auto &z : arr)
|
||||
z += d;
|
||||
|
||||
for (auto [ x, y ] = a; auto z : arr)
|
||||
if (x + z != 5 || y + z != 6)
|
||||
__builtin_abort ();
|
||||
}
|
Loading…
Reference in New Issue
Block a user