mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-07-27 04:50:28 +00:00
Import C++ Standard Template Library
You can now use the hardest fastest and most dangerous language there is with Cosmopolitan. So far about 75% of LLVM libcxx has been added. A few breaking changes needed to be made to help this go smoothly. - Rename nothrow to dontthrow - Rename nodiscard to dontdiscard - Add some libm functions, e.g. lgamma, nan, etc. - Change intmax_t from int128 to int64 like everything else - Introduce %jjd formatting directive for int128_t - Introduce strtoi128(), strtou128(), etc. - Rename bsrmax() to bsr128() Some of the templates that should be working currently are std::vector, std::string, std::map, std::set, std::deque, etc.
This commit is contained in:
parent
5022f9e920
commit
868af3f950
286 changed files with 123987 additions and 507 deletions
2
third_party/chibicc/parse.c
vendored
2
third_party/chibicc/parse.c
vendored
|
@ -555,7 +555,7 @@ static Token *thing_attributes(Token *tok, void *arg) {
|
|||
consume_attribute(&tok, tok, "warn_unused_result") ||
|
||||
consume_attribute(&tok, tok, "flatten") ||
|
||||
consume_attribute(&tok, tok, "leaf") ||
|
||||
consume_attribute(&tok, tok, "nothrow") ||
|
||||
consume_attribute(&tok, tok, "dontthrow") ||
|
||||
consume_attribute(&tok, tok, "optnone") ||
|
||||
consume_attribute(&tok, tok, "returns_twice") ||
|
||||
consume_attribute(&tok, tok, "nodebug") ||
|
||||
|
|
4
third_party/chibicc/preprocess.c
vendored
4
third_party/chibicc/preprocess.c
vendored
|
@ -1105,6 +1105,10 @@ __INT64_TYPE__\000\
|
|||
long int\000\
|
||||
__UINT64_TYPE__\000\
|
||||
long unsigned int\000\
|
||||
__INTMAX_TYPE__\000\
|
||||
long int\000\
|
||||
__UINTMAX_TYPE__\000\
|
||||
long unsigned int\000\
|
||||
__INTPTR_TYPE__\000\
|
||||
long int\000\
|
||||
__UINTPTR_TYPE__\000\
|
||||
|
|
4
third_party/chibicc/test/common.c
vendored
4
third_party/chibicc/test/common.c
vendored
|
@ -17,8 +17,8 @@ void Assert2(long expected, long actual, char *code, char *func, int line) {
|
|||
|
||||
void Assert128(__int128 k, __int128 x, char *code, char *func, int line) {
|
||||
if (k != x) {
|
||||
fprintf(stderr, "%s:%d: %s => want %jd but got %jd\n", func, line, code, k,
|
||||
x);
|
||||
fprintf(stderr, "%s:%d: %s => want %jjd but got %jjd\n", func, line, code,
|
||||
k, x);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
|
8
third_party/chibicc/test/int128_test.c
vendored
8
third_party/chibicc/test/int128_test.c
vendored
|
@ -38,8 +38,8 @@ __int128 sub128x6(int f, __int128 a, __int128 b, __int128 c, __int128 d,
|
|||
return f - a - b - c - d - e;
|
||||
}
|
||||
|
||||
void lotsOfArgs(const char *file, int line, const char *func, intmax_t beg,
|
||||
intmax_t end, intmax_t got, const char *gotcode, bool isfatal) {
|
||||
void lotsOfArgs(const char *file, int line, const char *func, int128_t beg,
|
||||
int128_t end, int128_t got, const char *gotcode, bool isfatal) {
|
||||
}
|
||||
|
||||
void testLang128(void) {
|
||||
|
@ -8176,7 +8176,7 @@ void testNot128(void) {
|
|||
void testAbi(void) {
|
||||
ASSERT(0, ({
|
||||
char buf[200];
|
||||
sprintf(buf, "%d %d %d %d %032jx %032jx", 1, 2, 3, 4,
|
||||
sprintf(buf, "%d %d %d %d %032jjx %032jjx", 1, 2, 3, 4,
|
||||
I128(0x1ffffffff, 0x2ffffffff),
|
||||
I128(0x3eeeeeeee, 0x4eeeeeeee));
|
||||
strcmp("1 2 3 4 00000001ffffffff00000002ffffffff "
|
||||
|
@ -8185,7 +8185,7 @@ void testAbi(void) {
|
|||
}));
|
||||
ASSERT(0, ({
|
||||
char buf[200];
|
||||
sprintf(buf, "%d %d %d %d %d %032jx %032jx", 1, 2, 3, 4, 5,
|
||||
sprintf(buf, "%d %d %d %d %d %032jjx %032jjx", 1, 2, 3, 4, 5,
|
||||
I128(0x1ffffffff, 0x2ffffffff),
|
||||
I128(0x3eeeeeeee, 0x4eeeeeeee));
|
||||
strcmp("1 2 3 4 5 00000001ffffffff00000002ffffffff "
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue