diff options
| -rw-r--r-- | Makefile | 2 | ||||
| -rwxr-xr-x | scripts/gen-deps | 2 | ||||
| -rw-r--r-- | src/lower.c | 17 |
3 files changed, 14 insertions, 7 deletions
@@ -18,7 +18,7 @@ all: setup .PHONY: analyze analyze: setup - CC='gcc -fanalyzer' SKIP_ANALYZER='-fno-analyzer' $(MAKE) CROSS_COMPILE= + CFLAGS='$$CFLAGS -fanalyzer' SKIP_ANALYZER='-fno-analyzer' $(MAKE) .PHONY: setup setup: diff --git a/scripts/gen-deps b/scripts/gen-deps index f45707c..0073980 100755 --- a/scripts/gen-deps +++ b/scripts/gen-deps @@ -18,7 +18,7 @@ done shift $((OPTIND - 1)) # create all subdirectories -mkdir -p $(echo "${@}" | tr ' ' '\n' | sed "s|[^/]*$||;s|^|${BUILD}/|" | uniq) +mkdir -p $(echo "${@}" | tr ' ' '\n' | sed "s|[^/]*$||;s|^|${BUILD}/|" | sort -u) for s in ${@} do diff --git a/src/lower.c b/src/lower.c index a31564f..e29365d 100644 --- a/src/lower.c +++ b/src/lower.c @@ -682,6 +682,12 @@ static int lower_param_copy(struct state *state, struct ast *param, FILE *f, siz char *type = lower_type_str(param->t); fprintf(f, " %s a%zu;\n", type, idx); free(type); + + indent(state); + + char *p = mangle2(param); + fprintf(state->code, "ctx->%s = params->a%zu;\n", p, idx); + free(p); return 0; } @@ -707,11 +713,6 @@ static int lower_param_copies(struct state *state, struct ast *params) assert(param_buf); add_type(state, param_buf); - - indent(state); - fprintf(state->code, "*((struct %s_params *)&ctx->%s_start) =" - " *((struct %s_params *)args);\n", - state->prefix, state->prefix, state->prefix); return 0; } @@ -766,6 +767,12 @@ static int lower_proc(struct state *state, struct ast *proc) fprintf(new_state.code, "struct %s_ctx *ctx = &ctx_buf;\n", name); } + if (proc_params(proc)) { + indent(&new_state); + fprintf(new_state.code, "struct %s_params *params = (struct %s_params *)args;\n", + name, name); + } + /* allocates parameter slots */ int ret = lower_params(&new_state, proc_params(proc)); assert(ret == 0); |
