Added -Wpointer-arith to CFLAGS, read more

I attempted to add '-Wpedantic' to CFLAGS, but it seems that my usage of
the variable length arrays within unions is causing an error that can't
be selectively disabled:

error: invalid use of structure with flexible array member [-Werror=pedantic]

This is the offending code: /source/toy_string.h#L9-L37

It seems that tagged unions, with VLAs within, is simply not allowed.
Unfortunately, my whole string system depends on it. I'll have to find some way
around it.

I've also updated the debugging output in repl/main.c.
This commit is contained in:
2024-12-12 18:14:08 +11:00
parent cf9affe190
commit 7be63c8ccc
11 changed files with 79 additions and 150 deletions

View File

@@ -1,6 +1,6 @@
#compiler settings
CC=gcc
CFLAGS+=-std=c17 -g -Wall -Werror -Wextra -Wformat=2
CFLAGS+=-std=c17 -g -Wall -Werror -Wextra -Wpointer-arith -Wformat=2
LIBS+=-lm
LDFLAGS+=

View File

@@ -1,6 +1,6 @@
#compiler settings
CC=gcc
CFLAGS+=-std=c17 -g -Wall -Werror -Wextra -Wformat=2
CFLAGS+=-std=c17 -g -Wall -Werror -Wextra -Wpointer-arith -Wformat=2
LIBS+=-lm
LDFLAGS+=

View File

@@ -18,7 +18,7 @@ int test_routine_expressions(Toy_Bucket** bucketHandle) {
Toy_private_emitAstPass(bucketHandle, &ast);
//run
void* buffer = Toy_compileRoutine(ast);
unsigned char* buffer = Toy_compileRoutine(ast);
//check header
int* ptr = (int*)buffer;
@@ -66,7 +66,7 @@ int test_routine_expressions(Toy_Bucket** bucketHandle) {
Toy_Ast* ast = Toy_scanParser(bucketHandle, &parser);
//run
void* buffer = Toy_compileRoutine(ast);
unsigned char* buffer = Toy_compileRoutine(ast);
//check header
int* ptr = (int*)buffer;
@@ -114,7 +114,7 @@ int test_routine_expressions(Toy_Bucket** bucketHandle) {
Toy_Ast* ast = Toy_scanParser(bucketHandle, &parser);
//run
void* buffer = Toy_compileRoutine(ast);
unsigned char* buffer = Toy_compileRoutine(ast);
//check header
int* ptr = (int*)buffer;
@@ -166,7 +166,7 @@ int test_routine_expressions(Toy_Bucket** bucketHandle) {
Toy_Ast* ast = Toy_scanParser(bucketHandle, &parser);
//run
void* buffer = Toy_compileRoutine(ast);
unsigned char* buffer = Toy_compileRoutine(ast);
//check header
int* ptr = (int*)buffer;
@@ -218,7 +218,7 @@ int test_routine_expressions(Toy_Bucket** bucketHandle) {
Toy_Ast* ast = Toy_scanParser(bucketHandle, &parser);
//run
void* buffer = Toy_compileRoutine(ast);
unsigned char* buffer = Toy_compileRoutine(ast);
//check header
int* ptr = (int*)buffer;
@@ -271,7 +271,7 @@ int test_routine_expressions(Toy_Bucket** bucketHandle) {
Toy_Ast* ast = Toy_scanParser(bucketHandle, &parser);
//run
void* buffer = Toy_compileRoutine(ast);
unsigned char* buffer = Toy_compileRoutine(ast);
//check header
int* ptr = (int*)buffer;
@@ -324,7 +324,7 @@ int test_routine_expressions(Toy_Bucket** bucketHandle) {
Toy_Ast* ast = Toy_scanParser(bucketHandle, &parser);
//run
void* buffer = Toy_compileRoutine(ast);
unsigned char* buffer = Toy_compileRoutine(ast);
//check header
int* header = (int*)buffer;
@@ -350,7 +350,7 @@ int test_routine_expressions(Toy_Bucket** bucketHandle) {
return -1;
}
void* code = buffer + 32; //8 values in the header, each 4 bytes
unsigned char* code = buffer + 32; //8 values in the header, each 4 bytes
//check code
if (
@@ -374,7 +374,7 @@ int test_routine_expressions(Toy_Bucket** bucketHandle) {
return -1;
}
void* jumps = code + 12;
unsigned char* jumps = code + 12;
//check jumps
if (
@@ -430,7 +430,7 @@ int test_routine_binary(Toy_Bucket** bucketHandle) {
Toy_Ast* ast = Toy_scanParser(bucketHandle, &parser);
//run
void* buffer = Toy_compileRoutine(ast);
unsigned char* buffer = Toy_compileRoutine(ast);
//check header
int* ptr = (int*)buffer;
@@ -495,7 +495,7 @@ int test_routine_binary(Toy_Bucket** bucketHandle) {
Toy_Ast* ast = Toy_scanParser(bucketHandle, &parser);
//run
void* buffer = Toy_compileRoutine(ast);
unsigned char* buffer = Toy_compileRoutine(ast);
//check header
int* ptr = (int*)buffer;
@@ -560,7 +560,7 @@ int test_routine_binary(Toy_Bucket** bucketHandle) {
Toy_Ast* ast = Toy_scanParser(bucketHandle, &parser);
//run
void* buffer = Toy_compileRoutine(ast);
unsigned char* buffer = Toy_compileRoutine(ast);
//check header
int* ptr = (int*)buffer;
@@ -625,7 +625,7 @@ int test_routine_binary(Toy_Bucket** bucketHandle) {
Toy_Ast* ast = Toy_scanParser(bucketHandle, &parser);
//run
void* buffer = Toy_compileRoutine(ast);
unsigned char* buffer = Toy_compileRoutine(ast);
//check header
int* ptr = (int*)buffer;
@@ -720,7 +720,7 @@ int test_routine_keywords(Toy_Bucket** bucketHandle) {
Toy_Ast* ast = Toy_scanParser(bucketHandle, &parser);
//run
void* buffer = Toy_compileRoutine(ast);
unsigned char* buffer = Toy_compileRoutine(ast);
//check header
int* ptr = (int*)buffer;
@@ -778,7 +778,7 @@ int test_routine_keywords(Toy_Bucket** bucketHandle) {
Toy_Ast* ast = Toy_scanParser(bucketHandle, &parser);
//run
void* buffer = Toy_compileRoutine(ast);
unsigned char* buffer = Toy_compileRoutine(ast);
//check header
int* ptr = (int*)buffer;
@@ -841,7 +841,7 @@ int test_routine_keywords(Toy_Bucket** bucketHandle) {
Toy_Ast* ast = Toy_scanParser(bucketHandle, &parser);
//run
void* buffer = Toy_compileRoutine(ast);
unsigned char* buffer = Toy_compileRoutine(ast);
//check header
int* ptr = (int*)buffer;
@@ -931,7 +931,7 @@ int test_routine_keywords(Toy_Bucket** bucketHandle) {
Toy_Ast* ast = Toy_scanParser(bucketHandle, &parser);
//run
void* buffer = Toy_compileRoutine(ast);
unsigned char* buffer = Toy_compileRoutine(ast);
//check header
int* ptr = (int*)buffer;
@@ -1045,7 +1045,7 @@ int test_routine_keywords(Toy_Bucket** bucketHandle) {
Toy_Ast* ast = Toy_scanParser(bucketHandle, &parser);
//run
void* buffer = Toy_compileRoutine(ast);
unsigned char* buffer = Toy_compileRoutine(ast);
//check header
int* ptr = (int*)buffer;
@@ -1102,7 +1102,7 @@ int test_routine_keywords(Toy_Bucket** bucketHandle) {
Toy_Ast* ast = Toy_scanParser(bucketHandle, &parser);
//run
void* buffer = Toy_compileRoutine(ast);
unsigned char* buffer = Toy_compileRoutine(ast);
//check header
int* header = (int*)buffer;
@@ -1128,7 +1128,7 @@ int test_routine_keywords(Toy_Bucket** bucketHandle) {
return -1;
}
void* code = buffer + 32; //8 values in the header, each 4 bytes
unsigned char* code = buffer + 32; //8 values in the header, each 4 bytes
//check code
if (
@@ -1161,7 +1161,7 @@ int test_routine_keywords(Toy_Bucket** bucketHandle) {
return -1;
}
void* jumps = code + 20;
unsigned char* jumps = code + 20;
//check jumps
if (
@@ -1209,7 +1209,7 @@ int test_routine_keywords(Toy_Bucket** bucketHandle) {
Toy_Ast* ast = Toy_scanParser(bucketHandle, &parser);
//run
void* buffer = Toy_compileRoutine(ast);
unsigned char* buffer = Toy_compileRoutine(ast);
//check header
int* header = (int*)buffer;
@@ -1235,7 +1235,7 @@ int test_routine_keywords(Toy_Bucket** bucketHandle) {
return -1;
}
void* code = buffer + 32; //8 values in the header, each 4 bytes
unsigned char* code = buffer + 32; //8 values in the header, each 4 bytes
//check code
if (
@@ -1268,7 +1268,7 @@ int test_routine_keywords(Toy_Bucket** bucketHandle) {
return -1;
}
void* jumps = code + 20;
unsigned char* jumps = code + 20;
//check jumps
if (

View File

@@ -1,6 +1,6 @@
#compiler settings
CC=gcc
CFLAGS+=-std=c17 -g -Wall -Werror -Wextra -Wformat=2
CFLAGS+=-std=c17 -g -Wall -Werror -Wextra -Wpointer-arith -Wformat=2
LIBS+=-lm
LDFLAGS+=

View File

@@ -1,6 +1,6 @@
#compiler settings
CC=gcc
CFLAGS+=-std=c17 -g -Wall -Werror -Wextra -Wformat=2
CFLAGS+=-std=c17 -g -Wall -Werror -Wextra -Wpointer-arith -Wformat=2
LIBS+=-lm
LDFLAGS+=