| // 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 (); | |
| } |