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