Fix warnings

This change fixes Cosmopolitan so it has fewer opinions about compiler
warnings. The whole repository had to be cleaned up to be buildable in
-Werror -Wall mode. This lets us benefit from things like strict const
checking. Some actual bugs might have been caught too.
This commit is contained in:
Justine Tunney 2023-09-01 20:49:13 -07:00
parent e2b3c3618e
commit 0d748ad58e
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
571 changed files with 1306 additions and 1888 deletions

View file

@ -775,7 +775,7 @@ static void Tokenize(struct As *a, int path) {
static int GetSymbol(struct As *a, int name) {
struct HashEntry *p;
unsigned i, j, k, n, m, h, n2;
unsigned i, j, k, n, m, h;
if (!(h = crc32c(0, a->slices.p[name].p, a->slices.p[name].n))) h = 1;
n = a->symbolindex.n;
i = 0;
@ -932,7 +932,6 @@ static int NewBinary(struct As *a, enum ExprKind k, int lhs, int rhs) {
// | symbol
// | reference
static int ParsePrimary(struct As *a, int *rest, int i) {
int e;
if (IsInt(a, i)) {
*rest = i + 1;
return NewPrimary(a, EX_INT, a->ints.p[a->things.p[i].i]);
@ -1765,7 +1764,7 @@ static void OnSize(struct As *a, struct Slice s) {
}
static void OnEqu(struct As *a, struct Slice s) {
int i, j;
int i;
i = GetSymbol(a, a->things.p[a->i++].i);
ConsumeComma(a);
a->symbols.p[i].offset = GetInt(a);
@ -1967,15 +1966,17 @@ static int RemoveRexw(int x) {
static int GetRegisterReg(struct As *a) {
int reg;
struct Slice wut;
if ((reg = FindRegReg(GetSlice(a))) == -1) InvalidRegister(a);
if ((reg = FindRegReg(GetSlice(a))) == -1) {
InvalidRegister(a);
}
return reg;
}
static int GetRegisterRm(struct As *a) {
int reg;
struct Slice wut;
if ((reg = FindRegRm(GetSlice(a))) == -1) InvalidRegister(a);
if ((reg = FindRegRm(GetSlice(a))) == -1) {
InvalidRegister(a);
}
return reg;
}
@ -1992,7 +1993,7 @@ static int ParseModrm(struct As *a, int *disp) {
0b00000000000000000000000000000000*/
struct Slice str;
int reg, scale, modrm = 0;
int reg, modrm = 0;
if (!ConsumeSegment(a) && IsRegister(a, a->i)) {
*disp = 0;
modrm = GetRegisterRm(a) | ISREG;
@ -2057,12 +2058,12 @@ static void EmitImm(struct As *a, int reg, int imm) {
}
static void EmitModrm(struct As *a, int reg, int modrm, int disp) {
int relo, mod, rm;
int relo, mod;
void (*emitter)(struct As *, uint128_t);
reg &= 7;
reg <<= 3;
if (modrm & ISREG) {
EmitByte(a, 0300 | reg | modrm & 7);
EmitByte(a, 0300 | reg | (modrm & 7));
} else {
if (modrm & ISRIP) {
EmitByte(a, 005 | reg);
@ -2348,7 +2349,7 @@ static dontinline void OpXadd(struct As *a) {
}
static dontinline int OpF6Impl(struct As *a, struct Slice s, int reg) {
int modrm, imm, disp;
int modrm, disp;
modrm = ParseModrm(a, &disp);
reg |= GetOpSize(a, s, modrm, 1) << 3;
EmitRexOpModrm(a, 0xF6, reg, modrm, disp, 1);
@ -2642,7 +2643,6 @@ static void OnPush(struct As *a, struct Slice s) {
}
static void OnRdpid(struct As *a, struct Slice s) {
int modrm, disp;
EmitVarword(a, 0xf30fc7);
EmitByte(a, 0370 | GetRegisterReg(a));
}
@ -2700,6 +2700,8 @@ static void OnFile(struct As *a, struct Slice s) {
struct Slice path;
fileno = GetInt(a);
path = GetSlice(a);
(void)fileno;
(void)path;
// TODO: DWARF
}
@ -2707,6 +2709,8 @@ static void OnLoc(struct As *a, struct Slice s) {
int fileno, lineno;
fileno = GetInt(a);
lineno = GetInt(a);
(void)fileno;
(void)lineno;
// TODO: DWARF
}
@ -2762,7 +2766,7 @@ static void OnFxch(struct As *a, struct Slice s) {
int rm;
rm = !IsSemicolon(a) ? GetRegisterRm(a) : 1;
EmitByte(a, 0xD9);
EmitByte(a, 0310 | rm & 7);
EmitByte(a, 0310 | (rm & 7));
}
static void OnBswap(struct As *a, struct Slice s) {
@ -2770,7 +2774,7 @@ static void OnBswap(struct As *a, struct Slice s) {
srm = GetRegisterRm(a);
EmitRex(a, srm);
EmitByte(a, 0x0F);
EmitByte(a, 0310 | srm & 7);
EmitByte(a, 0310 | (srm & 7));
}
static dontinline void OpFcomImpl(struct As *a, int op) {
@ -2786,7 +2790,7 @@ static dontinline void OpFcomImpl(struct As *a, int op) {
}
}
}
EmitVarword(a, op | rm & 7);
EmitVarword(a, op | (rm & 7));
}
static dontinline void OpFcom(struct As *a, int op) {