xref: /llvm-project/clang/test/AST/ByteCode/ms.cpp (revision f838d6b1b2d84d3149685c3a3896dc82889563f7)
1*f838d6b1STimm Baeder // RUN: %clang_cc1 -verify=ref,both %s -fms-extensions -fcxx-exceptions
2*f838d6b1STimm Baeder // RUN: %clang_cc1 -verify=expected,both %s -fexperimental-new-constant-interpreter -fms-extensions -fcxx-exceptions
3a07aba5dSTimm Baeder 
4a07aba5dSTimm Baeder // ref-no-diagnostics
5a07aba5dSTimm Baeder // expected-no-diagnostics
6a07aba5dSTimm Baeder 
7a07aba5dSTimm Baeder /// Used to assert because the two parameters to _rotl do not have the same type.
8a07aba5dSTimm Baeder static_assert(_rotl(0x01, 5) == 32);
9a07aba5dSTimm Baeder 
10a07aba5dSTimm Baeder static_assert(alignof(__unaligned int) == 1, "");
11*f838d6b1STimm Baeder 
12*f838d6b1STimm Baeder static_assert(__noop() == 0, "");
13*f838d6b1STimm Baeder 
14*f838d6b1STimm Baeder constexpr int noopIsActuallyNoop() {
15*f838d6b1STimm Baeder     int a = 0;
16*f838d6b1STimm Baeder     __noop(throw);
17*f838d6b1STimm Baeder     __noop(++a);
18*f838d6b1STimm Baeder     __noop(a = 100);
19*f838d6b1STimm Baeder     return a;
20*f838d6b1STimm Baeder }
21*f838d6b1STimm Baeder static_assert(noopIsActuallyNoop() == 0);
22