Skip to content

Commit 27ef886

Browse files
committed
Convert int variables to bool type when possible
The bool type (1 byte) provides memory efficiency over int (4 bytes) and gives semantic hints to the optimizer for boolean-specific optimizations.
1 parent ee97fef commit 27ef886

File tree

7 files changed

+144
-139
lines changed

7 files changed

+144
-139
lines changed

src/defs.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ typedef struct var_list {
350350
struct var {
351351
type_t *type;
352352
char var_name[MAX_VAR_LEN];
353-
int is_ptr;
353+
int ptr_level;
354354
bool is_func;
355355
bool is_global;
356356
int array_size;
@@ -439,7 +439,7 @@ struct type {
439439
/* lvalue details */
440440
typedef struct {
441441
int size;
442-
int is_ptr;
442+
int ptr_level;
443443
bool is_func;
444444
bool is_reference;
445445
type_t *type;

src/globals.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -584,8 +584,8 @@ void hashmap_free(hashmap_t *map)
584584

585585
/* options */
586586

587-
int dump_ir = 0;
588-
int hard_mul_div = 0;
587+
bool dump_ir = false;
588+
bool hard_mul_div = false;
589589

590590
/* Find the type by the given name.
591591
* @type_name: The name to be searched.
@@ -883,7 +883,7 @@ var_t *find_var(char *token, block_t *parent)
883883
int size_var(var_t *var)
884884
{
885885
int size;
886-
if (var->is_ptr > 0 || var->is_func) {
886+
if (var->ptr_level > 0 || var->is_func) {
887887
size = 4;
888888
} else {
889889
type_t *type = var->type;
@@ -1426,7 +1426,7 @@ void dump_bb_insn(func_t *func, basic_block_t *bb, bool *at_func_start)
14261426
print_indent(1);
14271427
printf("allocat %s", rd->type->type_name);
14281428

1429-
for (int i = 0; i < rd->is_ptr; i++)
1429+
for (int i = 0; i < rd->ptr_level; i++)
14301430
printf("*");
14311431

14321432
printf(" %%%s", rd->var_name);
@@ -1636,7 +1636,7 @@ void dump_insn(void)
16361636

16371637
printf("def %s", func->return_def.type->type_name);
16381638

1639-
for (int i = 0; i < func->return_def.is_ptr; i++)
1639+
for (int i = 0; i < func->return_def.ptr_level; i++)
16401640
printf("*");
16411641
printf(" @%s(", func->return_def.var_name);
16421642

@@ -1645,7 +1645,7 @@ void dump_insn(void)
16451645
printf(", ");
16461646
printf("%s", func->param_defs[i].type->type_name);
16471647

1648-
for (int k = 0; k < func->param_defs[i].is_ptr; k++)
1648+
for (int k = 0; k < func->param_defs[i].ptr_level; k++)
16491649
printf("*");
16501650
printf(" %%%s", func->param_defs[i].var_name);
16511651
}

src/main.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,16 @@
4848

4949
int main(int argc, char *argv[])
5050
{
51-
int libc = 1;
51+
bool libc = true;
5252
char *out = NULL, *in = NULL;
5353

5454
for (int i = 1; i < argc; i++) {
5555
if (!strcmp(argv[i], "--dump-ir"))
56-
dump_ir = 1;
56+
dump_ir = true;
5757
else if (!strcmp(argv[i], "+m"))
58-
hard_mul_div = 1;
58+
hard_mul_div = true;
5959
else if (!strcmp(argv[i], "--no-libc"))
60-
libc = 0;
60+
libc = false;
6161
else if (!strcmp(argv[i], "-o")) {
6262
if (i + 1 < argc) {
6363
out = argv[i + 1];

0 commit comments

Comments
 (0)