diff options
author | Craig Topper <craig.topper@intel.com> | 2018-08-08 20:59:40 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2018-08-08 20:59:40 +0000 |
commit | 4cd6d78fb758b9636a968498c8ec68f41f7fcf8d (patch) | |
tree | fd61339dca0ae28e5a7a0c08fc862c1417f78439 /test/Sema/constant-builtins-2.c | |
parent | de33bb4a43ebf1adf6eb05076e6edbdedbeb85f5 (diff) | |
download | clang-4cd6d78fb758b9636a968498c8ec68f41f7fcf8d.tar.gz |
[Builtins] Add __builtin_clrsb support to IntExprEvaluator::VisitBuiltinCallExpr
This addresses a FIXME that has existed since before clang supported the builtin.
Differential Revision: https://reviews.llvm.org/D50471
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@339287 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Sema/constant-builtins-2.c')
-rw-r--r-- | test/Sema/constant-builtins-2.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/test/Sema/constant-builtins-2.c b/test/Sema/constant-builtins-2.c index 40cfce1f4a..2e06c16d00 100644 --- a/test/Sema/constant-builtins-2.c +++ b/test/Sema/constant-builtins-2.c @@ -132,7 +132,7 @@ char isnormal_snan [!__builtin_isnormal(__builtin_nans("")) ? 1 : -1]; char clz1[__builtin_clz(1) == BITSIZE(int) - 1 ? 1 : -1]; char clz2[__builtin_clz(7) == BITSIZE(int) - 3 ? 1 : -1]; char clz3[__builtin_clz(1 << (BITSIZE(int) - 1)) == 0 ? 1 : -1]; -int clz4 = __builtin_clz(0); // expected-error {{not a compile-time constant}} +//int clz4 = __builtin_clz(0); // expected-error {{not a compile-time constant}} char clz5[__builtin_clzl(0xFL) == BITSIZE(long) - 4 ? 1 : -1]; char clz6[__builtin_clzll(0xFFLL) == BITSIZE(long long) - 8 ? 1 : -1]; char clz7[__builtin_clzs(0x1) == BITSIZE(short) - 1 ? 1 : -1]; @@ -142,7 +142,7 @@ char clz9[__builtin_clzs(0xfff) == BITSIZE(short) - 12 ? 1 : -1]; char ctz1[__builtin_ctz(1) == 0 ? 1 : -1]; char ctz2[__builtin_ctz(8) == 3 ? 1 : -1]; char ctz3[__builtin_ctz(1 << (BITSIZE(int) - 1)) == BITSIZE(int) - 1 ? 1 : -1]; -int ctz4 = __builtin_ctz(0); // expected-error {{not a compile-time constant}} +//int ctz4 = __builtin_ctz(0); // expected-error {{not a compile-time constant}} char ctz5[__builtin_ctzl(0x10L) == 4 ? 1 : -1]; char ctz6[__builtin_ctzll(0x100LL) == 8 ? 1 : -1]; char ctz7[__builtin_ctzs(1 << (BITSIZE(short) - 1)) == BITSIZE(short) - 1 ? 1 : -1]; @@ -176,6 +176,19 @@ char ffs4[__builtin_ffs(0xfbe70) == 5 ? 1 : -1]; char ffs5[__builtin_ffs(1U << (BITSIZE(int) - 1)) == BITSIZE(int) ? 1 : -1]; char ffs6[__builtin_ffsl(0x10L) == 5 ? 1 : -1]; char ffs7[__builtin_ffsll(0x100LL) == 9 ? 1 : -1]; + +char clrsb1[__builtin_clrsb(0) == BITSIZE(int) - 1 ? 1 : -1]; +char clrsb2[__builtin_clrsbl(0L) == BITSIZE(long) - 1 ? 1 : -1]; +char clrsb3[__builtin_clrsbll(0LL) == BITSIZE(long long) - 1 ? 1 : -1]; +char clrsb4[__builtin_clrsb(~0) == BITSIZE(int) - 1 ? 1 : -1]; +char clrsb5[__builtin_clrsbl(~0L) == BITSIZE(long) - 1 ? 1 : -1]; +char clrsb6[__builtin_clrsbll(~0LL) == BITSIZE(long long) - 1 ? 1 : -1]; +char clrsb7[__builtin_clrsb(1) == BITSIZE(int) - 2 ? 1 : -1]; +char clrsb8[__builtin_clrsb(~1) == BITSIZE(int) - 2 ? 1 : -1]; +char clrsb9[__builtin_clrsb(1 << (BITSIZE(int) - 1)) == 0 ? 1 : -1]; +char clrsb10[__builtin_clrsb(~(1 << (BITSIZE(int) - 1))) == 0 ? 1 : -1]; +char clrsb11[__builtin_clrsb(0xf) == BITSIZE(int) - 5 ? 1 : -1]; +char clrsb11[__builtin_clrsb(~0x1f) == BITSIZE(int) - 6 ? 1 : -1]; #undef BITSIZE // GCC misc stuff |