| /// This tests that the bytecode interpreter is in use if -fexperimental-new-constant-interpreter is passed. |
| /// This should be the case regardless of whether CLANG_USE_EXPERIMENTAL_CONST_INTERP is enabled or not. |
| /// |
| /// Similarly, it should _not_ be used if -fno-experimental-new-constant-interpreter is passed. |
| /// |
| /// All this should be true if the driver is used or -cc1. |
| |
| |
| // RUN: %clang -fsyntax-only -fexperimental-new-constant-interpreter %s -Xclang -verify=bc |
| // RUN: %clang -cc1 -fexperimental-new-constant-interpreter %s -verify=bc |
| |
| // RUN: %clang -fsyntax-only -fno-experimental-new-constant-interpreter %s -Xclang -verify=nobc |
| // RUN: %clang -cc1 -fno-experimental-new-constant-interpreter %s -verify=nobc |
| |
| |
| /// Note that we're not testing the behavior without those command line options since that |
| /// depends on the value of CLANG_USE_EXPERIMENTAL_CONST_INTERP, which we can't test for. |
| |
| |
| // bc-no-diagnostics |
| |
| |
| /// We test for the bytecode interperter by trying to bitcast a bitfield. |
| struct S { |
| unsigned a : 10; |
| }; |
| constexpr S s = __builtin_bit_cast(S, 12); // nobc-error {{must be initialized by a constant expression}} \ |
| // nobc-note {{constexpr bit_cast involving bit-field is not yet supported}} |