re PR tree-optimization/83283 (Casting from boolean to unsigned char to enum returns incorrect results)
PR tree-optimization/83283 * g++.dg/torture/pr83283.C: New test. From-SVN: r255417
This commit is contained in:
parent
1b6546cc4e
commit
240cf3e5e1
@ -1,3 +1,8 @@
|
||||
2017-12-05 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/83283
|
||||
* g++.dg/torture/pr83283.C: New test.
|
||||
|
||||
2017-12-05 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* gnat.dg/private_overriding.adb: New testcase.
|
||||
|
26
gcc/testsuite/g++.dg/torture/pr83283.C
Normal file
26
gcc/testsuite/g++.dg/torture/pr83283.C
Normal file
@ -0,0 +1,26 @@
|
||||
// PR tree-optimization/83283
|
||||
// { dg-do run }
|
||||
// { dg-additional-options "-std=c++11" }
|
||||
|
||||
enum E : unsigned char { X = 0, Y = 1 };
|
||||
|
||||
void __attribute__((noinline))
|
||||
foo (E *v, int size)
|
||||
{
|
||||
for (int i = 0; i < size; ++i)
|
||||
{
|
||||
const bool b = (v[i] == E::Y);
|
||||
v[i] = static_cast<E>(static_cast<unsigned char>(b));
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
constexpr int items = 32;
|
||||
E vals[items] = {X};
|
||||
vals[3] = Y;
|
||||
foo (vals, items);
|
||||
if (vals[3] != 1)
|
||||
__builtin_abort ();
|
||||
}
|
Loading…
Reference in New Issue
Block a user