diff options
| author | Xavier Del Campo Romero <xavi92@disroot.org> | 2026-09-05 17:14:53 +0200 |
|---|---|---|
| committer | Xavier Del Campo Romero <xavi92@disroot.org> | 2026-09-26 03:41:55 +0200 |
| commit | 3c0819236e4f07c8f57aaf1ca46d0d68aa761558 (patch) | |
| tree | bd8b57cf5420cabc4ec29815052df545b55026f9 /tmp.c | |
| parent | a3f56c76444fee090e62a59f257ed5f60b4e552b (diff) | |
| download | prc-3c0819236e4f07c8f57aaf1ca46d0d68aa761558.tar.gz | |
Move source to src/prc1
Diffstat (limited to 'tmp.c')
| -rw-r--r-- | tmp.c | 69 |
1 files changed, 0 insertions, 69 deletions
@@ -1,69 +0,0 @@ -#include "tmp.h" -#include "type.h" -#include <stddef.h> -#include <stdio.h> -#include <stdlib.h> - -const struct stentry *tmp_create(struct fn *fn, const struct type *t) -{ - static const char fmt[] = "__tmp%zu"; - int r = snprintf(NULL, 0, fmt, fn->ntmps); - char *s = NULL, *tname = NULL; - struct tmp *tmp; - - if (!(tname = type_name(t))) - goto failure; - else if (r < 0) - { - fprintf(stderr, "%s: snprintf(3) failed\n", __func__); - goto failure; - } - else if (!(s = malloc(r + 1))) - { - perror("malloc(3)"); - goto failure; - } - - snprintf(s, r + 1, fmt, fn->ntmps++); - - if (!(tmp = malloc(sizeof *tmp))) - { - perror("realloc(3)"); - goto failure; - } - - *tmp = (struct tmp) - { - .tk = - { - .type = ID, - .s = s, - .loc.f = "(temporary)" - }, - - .e = - { - .tk = &tmp->tk, - .t = t - } - }; - - if (!fn->tmps) - fn->tmps = tmp; - else - for (struct tmp *t = fn->tmps; t ; t = t->next) - if (!t->next) - { - t->next = tmp; - break; - } - - fprintf(stderr, "\tcreating temporary variable %s, type %s\n", s, tname); - free(tname); - return &tmp->e; - -failure: - free(s); - free(tname); - return NULL; -} |
