X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=exec.c;h=cd2ef6e46e27f1b74aa96ab6a85b15b19ca13315;hb=e0a7f8a484868ce3c8d9898d5cfb7edc7956019b;hp=8dc9e3cb17de0fb8575eb85b01e2d3ab5b632a1a;hpb=3c1992fc3825e922a4f881877189be543669834b;p=xonotic%2Fgmqcc.git diff --git a/exec.c b/exec.c index 8dc9e3c..cd2ef6e 100644 --- a/exec.c +++ b/exec.c @@ -477,7 +477,8 @@ static void prog_print_statement(qc_program *prog, prog_section_statement *st) static qcint prog_enterfunction(qc_program *prog, prog_section_function *func) { qc_exec_stack st; - size_t p, parampos; + size_t parampos; + int32_t p; /* back up locals */ st.localsp = vec_size(prog->localstack); @@ -633,8 +634,6 @@ const char *type_name[TYPE_COUNT] = { bool opts_debug = false; bool opts_memchk = false; -uint32_t opts_warn [1 + (COUNT_WARNINGS / 32)]; -bool opts_werror = false; typedef struct { int vtype; @@ -816,6 +815,7 @@ int main(int argc, char **argv) size_t xflags = VMXF_DEFAULT; bool opts_printfields = false; bool opts_printdefs = false; + bool opts_printfuns = false; bool opts_disasm = false; bool opts_info = false; @@ -850,6 +850,11 @@ int main(int argc, char **argv) ++argv; opts_printdefs = true; } + else if (!strcmp(argv[1], "-printfuns")) { + --argc; + ++argv; + opts_printfuns = true; + } else if (!strcmp(argv[1], "-printfields")) { --argc; ++argv; @@ -928,6 +933,18 @@ int main(int argc, char **argv) (unsigned int)prog->fields[i].offset); } } + else if (opts_printfuns) { + for (i = 0; i < vec_size(prog->functions); ++i) { + int32_t a; + printf("Function: %-16s taking %i parameters:", + prog_getstring(prog, prog->functions[i].name), + (unsigned int)prog->functions[i].nargs); + for (a = 0; a < prog->functions[i].nargs; ++a) { + printf(" %i", prog->functions[i].argsize[a]); + } + printf("\n"); + } + } else { if (fnmain > 0)