mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-27 15:16:08 +00:00

There is currently no support in MSVC for using i128 as an integer literal suffix. In fact, there appears to be no evidence that they have ever supported this feature in any of their compilers. This was an over generalization of their actual feature and is a nasty source of bugs. Why is it a source of bugs? Because most code in clang expects that evaluation of an integer constant expression won't give them something that 'long long' can't represent. Instead of providing a meaningful feature, i128 gives us cute ways of exploding the compiler. llvm-svn: 243243
21 lines
545 B
C++
21 lines
545 B
C++
// RUN: %clang_cc1 -std=c++11 -fsyntax-only -fms-extensions -verify %s
|
|
// expected-no-diagnostics
|
|
|
|
#ifdef __SIZEOF_INT8__
|
|
static_assert(sizeof(0i8) == __SIZEOF_INT8__, "");
|
|
|
|
constexpr int f(char) { return 1; }
|
|
constexpr int f(signed char) { return 2; }
|
|
|
|
static_assert(f(0i8) == 1, "");
|
|
#endif
|
|
#ifdef __SIZEOF_INT16__
|
|
static_assert(sizeof(0i16) == __SIZEOF_INT16__, "");
|
|
#endif
|
|
#ifdef __SIZEOF_INT32__
|
|
static_assert(sizeof(0i32) == __SIZEOF_INT32__, "");
|
|
#endif
|
|
#ifdef __SIZEOF_INT64__
|
|
static_assert(sizeof(0i64) == __SIZEOF_INT64__, "");
|
|
#endif
|