Add chibicc

This program popped up on Hacker News recently. It's the only modern
compiler I've ever seen that doesn't have dependencies and is easily
modified. So I added all of the missing GNU extensions I like to use
which means it might be possible soon to build on non-Linux and have
third party not vendor gcc binaries.
This commit is contained in:
Justine Tunney 2020-12-05 12:20:41 -08:00
parent e44a0cf6f8
commit 8da931a7f6
298 changed files with 19493 additions and 11950 deletions

View file

@ -25,8 +25,8 @@
#include "libc/sysv/consts/mlock.h"
#include "libc/testlib/testlib.h"
double g_avx2_juiceup_doubles_[4] aligned(32);
unsigned long long g_avx2_juiceup_quadwords_[4] aligned(32);
double g_avx2_juiceup_doubles_[4] forcealign(32);
unsigned long long g_avx2_juiceup_quadwords_[4] forcealign(32);
void testlib_benchwarmup(void) {
/* get mathematical parts of cpu juiced up */

View file

@ -20,11 +20,12 @@
#include "libc/fmt/fmt.h"
#include "libc/mem/mem.h"
#include "libc/testlib/testlib.h"
#include "third_party/dtoa/dtoa.h"
#include "third_party/gdtoa/gdtoa.h"
testonly char *testlib_formatfloat(long double x) {
char dtoabuf[32];
char buf[32];
char *str = malloc(256);
sprintf(str, "%Lf (%s)", x, g_fmt(dtoabuf, x));
g_xfmt_p(buf, &x, 15, sizeof(buf), 0);
sprintf(str, "%Lf (%s)", x, buf);
return str;
}

View file

@ -350,7 +350,7 @@ void testlib_runfixtures(testfn_t *, testfn_t *, const struct TestFixture *,
const struct TestFixture *);
int testlib_countfixtures(const struct TestFixture *,
const struct TestFixture *);
void testlib_abort(void) noreturn relegated;
void testlib_abort(void) wontreturn relegated;
bool testlib_strequals(size_t, const void *, const void *) nosideeffect;
bool testlib_strnequals(size_t, const void *, const void *,
size_t) nosideeffect;

View file

@ -99,7 +99,7 @@ LIBC_TESTLIB_A_DIRECTDEPS = \
LIBC_UNICODE \
LIBC_X \
LIBC_ZIPOS \
THIRD_PARTY_DTOA
THIRD_PARTY_GDTOA
LIBC_TESTLIB_A_DEPS := \
$(call uniq,$(foreach x,$(LIBC_TESTLIB_A_DIRECTDEPS),$($(x))))

View file

@ -35,7 +35,7 @@ void testlib_finish(void) {
}
}
noreturn void testlib_abort(void) {
wontreturn void testlib_abort(void) {
testlib_finish();
exit(MIN(255, g_testlib_failed));
unreachable;