Module Name: src
Committed By: rillig
Date: Fri Apr 2 10:13:03 UTC 2021
Modified Files:
src/usr.bin/xlint/lint1: cgram.y decl.c externs1.h func.c init.c mem1.c
tree.c
Log Message:
lint: name memory allocation functions consistently
No functional change.
To generate a diff of this commit:
cvs rdiff -u -r1.208 -r1.209 src/usr.bin/xlint/lint1/cgram.y
cvs rdiff -u -r1.167 -r1.168 src/usr.bin/xlint/lint1/decl.c
cvs rdiff -u -r1.97 -r1.98 src/usr.bin/xlint/lint1/externs1.h
cvs rdiff -u -r1.98 -r1.99 src/usr.bin/xlint/lint1/func.c
cvs rdiff -u -r1.187 -r1.188 src/usr.bin/xlint/lint1/init.c
cvs rdiff -u -r1.40 -r1.41 src/usr.bin/xlint/lint1/mem1.c
cvs rdiff -u -r1.256 -r1.257 src/usr.bin/xlint/lint1/tree.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.bin/xlint/lint1/cgram.y
diff -u src/usr.bin/xlint/lint1/cgram.y:1.208 src/usr.bin/xlint/lint1/cgram.y:1.209
--- src/usr.bin/xlint/lint1/cgram.y:1.208 Fri Apr 2 09:52:36 2021
+++ src/usr.bin/xlint/lint1/cgram.y Fri Apr 2 10:13:03 2021
@@ -1,5 +1,5 @@
%{
-/* $NetBSD: cgram.y,v 1.208 2021/04/02 09:52:36 rillig Exp $ */
+/* $NetBSD: cgram.y,v 1.209 2021/04/02 10:13:03 rillig Exp $ */
/*
* Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved.
@@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: cgram.y,v 1.208 2021/04/02 09:52:36 rillig Exp $");
+__RCSID("$NetBSD: cgram.y,v 1.209 2021/04/02 10:13:03 rillig Exp $");
#endif
#include <limits.h>
@@ -1878,7 +1878,7 @@ term:
$$ = new_string_node($1);
}
| T_CON {
- $$ = new_constant_node(gettyp($1->v_tspec), $1);
+ $$ = expr_new_constant(gettyp($1->v_tspec), $1);
}
| T_LPAREN expr T_RPAREN {
if ($2 != NULL)
Index: src/usr.bin/xlint/lint1/decl.c
diff -u src/usr.bin/xlint/lint1/decl.c:1.167 src/usr.bin/xlint/lint1/decl.c:1.168
--- src/usr.bin/xlint/lint1/decl.c:1.167 Tue Mar 30 14:25:28 2021
+++ src/usr.bin/xlint/lint1/decl.c Fri Apr 2 10:13:03 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: decl.c,v 1.167 2021/03/30 14:25:28 rillig Exp $ */
+/* $NetBSD: decl.c,v 1.168 2021/04/02 10:13:03 rillig Exp $ */
/*
* Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved.
@@ -38,7 +38,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: decl.c,v 1.167 2021/03/30 14:25:28 rillig Exp $");
+__RCSID("$NetBSD: decl.c,v 1.168 2021/04/02 10:13:03 rillig Exp $");
#endif
#include <sys/param.h>
@@ -162,7 +162,7 @@ tduptyp(const type_t *tp)
{
type_t *ntp;
- ntp = tgetblk(sizeof *ntp);
+ ntp = expr_zalloc(sizeof *ntp);
*ntp = *tp;
return ntp;
}
@@ -1015,9 +1015,9 @@ check_type(sym_t *sym)
/* function returns illegal type */
error(15);
if (t == FUNC) {
- *tpp = incref(*tpp, PTR);
+ *tpp = derive_type(*tpp, PTR);
} else {
- *tpp = incref((*tpp)->t_subt, PTR);
+ *tpp = derive_type((*tpp)->t_subt, PTR);
}
return;
} else if (tp->t_const || tp->t_volatile) {
@@ -1183,7 +1183,7 @@ declarator_1_struct_union(sym_t *dsym)
} else if (t == FUNC) {
/* function illegal in structure or union */
error(38);
- dsym->s_type = tp = incref(tp, t = PTR);
+ dsym->s_type = tp = derive_type(tp, t = PTR);
}
/*
@@ -2416,12 +2416,12 @@ declare_argument(sym_t *sym, bool initfl
}
if ((t = sym->s_type->t_tspec) == ARRAY) {
- sym->s_type = incref(sym->s_type->t_subt, PTR);
+ sym->s_type = derive_type(sym->s_type->t_subt, PTR);
} else if (t == FUNC) {
if (tflag)
/* a function is declared as an argument: %s */
warning(50, sym->s_name);
- sym->s_type = incref(sym->s_type, PTR);
+ sym->s_type = derive_type(sym->s_type, PTR);
} else if (t == FLOAT) {
if (tflag)
sym->s_type = gettyp(DOUBLE);
@@ -3334,7 +3334,7 @@ to_int_constant(tnode_t *tn, bool requir
* will be used later to match types.
*/
if (tn->tn_op != CON && dcs->d_ctx != ABSTRACT)
- tfreeblk();
+ expr_free_all();
if ((t = v->v_tspec) == FLOAT || t == DOUBLE || t == LDOUBLE) {
i = (int)v->v_ldbl;
Index: src/usr.bin/xlint/lint1/externs1.h
diff -u src/usr.bin/xlint/lint1/externs1.h:1.97 src/usr.bin/xlint/lint1/externs1.h:1.98
--- src/usr.bin/xlint/lint1/externs1.h:1.97 Fri Apr 2 09:52:36 2021
+++ src/usr.bin/xlint/lint1/externs1.h Fri Apr 2 10:13:03 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: externs1.h,v 1.97 2021/04/02 09:52:36 rillig Exp $ */
+/* $NetBSD: externs1.h,v 1.98 2021/04/02 10:13:03 rillig Exp $ */
/*
* Copyright (c) 1994, 1995 Jochen Pohl
@@ -105,11 +105,11 @@ extern void *getlblk(size_t, size_t);
extern void freeblk(void);
extern void freelblk(int);
-extern void *tgetblk(size_t);
+extern void *expr_zalloc(size_t);
extern tnode_t *expr_zalloc_tnode(void);
-extern void tfreeblk(void);
-extern struct memory_block *tsave(void);
-extern void trestor(struct memory_block *);
+extern void expr_free_all(void);
+extern struct memory_block *expr_save_memory(void);
+extern void expr_restore_memory(struct memory_block *);
/*
* err.c
@@ -196,9 +196,9 @@ extern int to_int_constant(tnode_t *, bo
/*
* tree.c
*/
-extern type_t *incref(type_t *, tspec_t);
-extern type_t *tincref(type_t *, tspec_t);
-extern tnode_t *new_constant_node(type_t *, val_t *);
+extern type_t *derive_type(type_t *, tspec_t);
+extern type_t *expr_derive_type(type_t *, tspec_t);
+extern tnode_t *expr_new_constant(type_t *, val_t *);
extern tnode_t *new_name_node(sym_t *, int);
extern tnode_t *new_string_node(strg_t *);
extern sym_t *struct_or_union_member(tnode_t *, op_t, sym_t *);
Index: src/usr.bin/xlint/lint1/func.c
diff -u src/usr.bin/xlint/lint1/func.c:1.98 src/usr.bin/xlint/lint1/func.c:1.99
--- src/usr.bin/xlint/lint1/func.c:1.98 Fri Mar 26 20:31:07 2021
+++ src/usr.bin/xlint/lint1/func.c Fri Apr 2 10:13:03 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: func.c,v 1.98 2021/03/26 20:31:07 rillig Exp $ */
+/* $NetBSD: func.c,v 1.99 2021/04/02 10:13:03 rillig Exp $ */
/*
* Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: func.c,v 1.98 2021/03/26 20:31:07 rillig Exp $");
+__RCSID("$NetBSD: func.c,v 1.99 2021/04/02 10:13:03 rillig Exp $");
#endif
#include <stdlib.h>
@@ -541,7 +541,7 @@ case_label(tnode_t *tn)
check_case_label(tn, ci);
- tfreeblk();
+ expr_free_all();
set_reached(true);
}
@@ -883,7 +883,7 @@ for1(tnode_t *tn1, tnode_t *tn2, tnode_t
* Also remember this expression itself. We must check it at
* the end of the loop to get "used but not set" warnings correct.
*/
- cstmt->c_for_expr3_mem = tsave();
+ cstmt->c_for_expr3_mem = expr_save_memory();
cstmt->c_for_expr3 = tn3;
cstmt->c_for_expr3_pos = curr_pos;
cstmt->c_for_expr3_csrc_pos = csrc_pos;
@@ -920,7 +920,7 @@ for2(void)
cspos = csrc_pos;
/* Restore the tree memory for the reinitialization expression */
- trestor(cstmt->c_for_expr3_mem);
+ expr_restore_memory(cstmt->c_for_expr3_mem);
tn3 = cstmt->c_for_expr3;
curr_pos = cstmt->c_for_expr3_pos;
csrc_pos = cstmt->c_for_expr3_csrc_pos;
@@ -935,7 +935,7 @@ for2(void)
if (tn3 != NULL) {
expr(tn3, false, false, true, false);
} else {
- tfreeblk();
+ expr_free_all();
}
curr_pos = cpos;
@@ -1034,7 +1034,7 @@ do_return(tnode_t *tn)
if (tn != NULL && funcsym->s_type->t_subt->t_tspec == VOID) {
/* void function %s cannot return value */
error(213, funcsym->s_name);
- tfreeblk();
+ expr_free_all();
tn = NULL;
} else if (tn == NULL && funcsym->s_type->t_subt->t_tspec != VOID) {
/*
@@ -1049,7 +1049,7 @@ do_return(tnode_t *tn)
if (tn != NULL) {
/* Create a temporary node for the left side */
- ln = tgetblk(sizeof *ln);
+ ln = expr_zalloc(sizeof *ln);
ln->tn_op = NAME;
ln->tn_type = tduptyp(funcsym->s_type->t_subt);
ln->tn_type->t_const = false;
Index: src/usr.bin/xlint/lint1/init.c
diff -u src/usr.bin/xlint/lint1/init.c:1.187 src/usr.bin/xlint/lint1/init.c:1.188
--- src/usr.bin/xlint/lint1/init.c:1.187 Fri Apr 2 09:39:25 2021
+++ src/usr.bin/xlint/lint1/init.c Fri Apr 2 10:13:03 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: init.c,v 1.187 2021/04/02 09:39:25 rillig Exp $ */
+/* $NetBSD: init.c,v 1.188 2021/04/02 10:13:03 rillig Exp $ */
/*
* Copyright (c) 1994, 1995 Jochen Pohl
@@ -38,7 +38,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: init.c,v 1.187 2021/04/02 09:39:25 rillig Exp $");
+__RCSID("$NetBSD: init.c,v 1.188 2021/04/02 10:13:03 rillig Exp $");
#endif
#include <stdlib.h>
@@ -383,7 +383,7 @@ check_init_expr(const type_t *tp, sym_t
struct memory_block *tmem;
/* Create a temporary node for the left side. */
- ln = tgetblk(sizeof *ln);
+ ln = expr_zalloc(sizeof *ln);
ln->tn_op = NAME;
ln->tn_type = tduptyp(tp);
ln->tn_type->t_const = false;
@@ -404,9 +404,9 @@ check_init_expr(const type_t *tp, sym_t
* Preserve the tree memory. This is necessary because otherwise
* expr() would free it.
*/
- tmem = tsave();
+ tmem = expr_save_memory();
expr(tn, true, false, true, false);
- trestor(tmem);
+ expr_restore_memory(tmem);
check_bit_field_init(ln, lt, rt);
Index: src/usr.bin/xlint/lint1/mem1.c
diff -u src/usr.bin/xlint/lint1/mem1.c:1.40 src/usr.bin/xlint/lint1/mem1.c:1.41
--- src/usr.bin/xlint/lint1/mem1.c:1.40 Fri Apr 2 09:52:36 2021
+++ src/usr.bin/xlint/lint1/mem1.c Fri Apr 2 10:13:03 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: mem1.c,v 1.40 2021/04/02 09:52:36 rillig Exp $ */
+/* $NetBSD: mem1.c,v 1.41 2021/04/02 10:13:03 rillig Exp $ */
/*
* Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: mem1.c,v 1.40 2021/04/02 09:52:36 rillig Exp $");
+__RCSID("$NetBSD: mem1.c,v 1.41 2021/04/02 10:13:03 rillig Exp $");
#endif
#include <sys/types.h>
@@ -336,24 +336,27 @@ static memory_block *tmblk;
* expression.
*/
void *
-tgetblk(size_t s)
+expr_zalloc(size_t s)
{
return xgetblk(&tmblk, s);
}
-/* Return a freshly allocated tree node. */
+/*
+ * Return a freshly allocated tree node that is freed at the end of the
+ * current expression.
+ */
tnode_t *
expr_zalloc_tnode(void)
{
- tnode_t *tn = tgetblk(sizeof *tn);
+ tnode_t *tn = expr_zalloc(sizeof *tn);
tn->tn_from_system_header = in_system_header;
return tn;
}
/* Free all memory which is allocated by the current expression. */
void
-tfreeblk(void)
+expr_free_all(void)
{
xfreeblk(&tmblk);
@@ -361,11 +364,11 @@ tfreeblk(void)
/*
* Save the memory which is used by the current expression. This memory
- * is not freed by the next tfreeblk() call. The pointer returned can be
+ * is not freed by the next expr_free_all() call. The pointer returned can be
* used to restore the memory.
*/
memory_block *
-tsave(void)
+expr_save_memory(void)
{
memory_block *tmem;
@@ -376,14 +379,14 @@ tsave(void)
/*
* Free all memory used for the current expression and the memory used
- * be a previous expression and saved by tsave(). The next call to
- * tfreeblk() frees the restored memory.
+ * be a previous expression and saved by expr_save_memory(). The next call to
+ * expr_free_all() frees the restored memory.
*/
void
-trestor(memory_block *tmem)
+expr_restore_memory(memory_block *tmem)
{
- tfreeblk();
+ expr_free_all();
if (tmblk != NULL) {
free(tmblk->blk);
free(tmblk);
Index: src/usr.bin/xlint/lint1/tree.c
diff -u src/usr.bin/xlint/lint1/tree.c:1.256 src/usr.bin/xlint/lint1/tree.c:1.257
--- src/usr.bin/xlint/lint1/tree.c:1.256 Fri Apr 2 09:52:36 2021
+++ src/usr.bin/xlint/lint1/tree.c Fri Apr 2 10:13:03 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: tree.c,v 1.256 2021/04/02 09:52:36 rillig Exp $ */
+/* $NetBSD: tree.c,v 1.257 2021/04/02 10:13:03 rillig Exp $ */
/*
* Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: tree.c,v 1.256 2021/04/02 09:52:36 rillig Exp $");
+__RCSID("$NetBSD: tree.c,v 1.257 2021/04/02 10:13:03 rillig Exp $");
#endif
#include <float.h>
@@ -50,7 +50,7 @@ __RCSID("$NetBSD: tree.c,v 1.256 2021/04
#include "lint1.h"
#include "cgram.h"
-static tnode_t *new_integer_constant_node(tspec_t, int64_t);
+static tnode_t *expr_new_integer_constant(tspec_t, int64_t);
static void check_pointer_comparison(op_t,
const tnode_t *, const tnode_t *);
static bool check_assign_types_compatible(op_t, int,
@@ -144,12 +144,9 @@ debug_node(const tnode_t *tn, int indent
}
#endif
-/*
- * Increase degree of reference.
- * This is most often used to change type "T" in type "pointer to T".
- */
+/* Build 'pointer to tp', 'array of tp' or 'function returning tp'. */
type_t *
-incref(type_t *tp, tspec_t t)
+derive_type(type_t *tp, tspec_t t)
{
type_t *tp2;
@@ -160,14 +157,15 @@ incref(type_t *tp, tspec_t t)
}
/*
- * same for use in expressions
+ * Build 'pointer to tp', 'array of tp' or 'function returning tp'. The
+ * memory is freed at the end of the current expression.
*/
type_t *
-tincref(type_t *tp, tspec_t t)
+expr_derive_type(type_t *tp, tspec_t t)
{
type_t *tp2;
- tp2 = tgetblk(sizeof *tp2);
+ tp2 = expr_zalloc(sizeof *tp2);
tp2->t_tspec = t;
tp2->t_subt = tp;
return tp2;
@@ -177,14 +175,14 @@ tincref(type_t *tp, tspec_t t)
* Create a node for a constant.
*/
tnode_t *
-new_constant_node(type_t *tp, val_t *v)
+expr_new_constant(type_t *tp, val_t *v)
{
tnode_t *n;
n = expr_zalloc_tnode();
n->tn_op = CON;
n->tn_type = tp;
- n->tn_val = tgetblk(sizeof *n->tn_val);
+ n->tn_val = expr_zalloc(sizeof *n->tn_val);
n->tn_val->v_tspec = tp->t_tspec;
n->tn_val->v_ansiu = v->v_ansiu;
n->tn_val->v_u = v->v_u;
@@ -193,14 +191,14 @@ new_constant_node(type_t *tp, val_t *v)
}
static tnode_t *
-new_integer_constant_node(tspec_t t, int64_t q)
+expr_new_integer_constant(tspec_t t, int64_t q)
{
tnode_t *n;
n = expr_zalloc_tnode();
n->tn_op = CON;
n->tn_type = gettyp(t);
- n->tn_val = tgetblk(sizeof *n->tn_val);
+ n->tn_val = expr_zalloc(sizeof *n->tn_val);
n->tn_val->v_tspec = t;
n->tn_val->v_quad = q;
return n;
@@ -232,7 +230,7 @@ fallback_symbol(sym_t *sym)
strcmp(sym->s_name, "__PRETTY_FUNCTION__") == 0)) {
/* __FUNCTION__/__PRETTY_FUNCTION__ is a GCC extension */
gnuism(316);
- sym->s_type = incref(gettyp(CHAR), PTR);
+ sym->s_type = derive_type(gettyp(CHAR), PTR);
sym->s_type->t_const = true;
return;
}
@@ -241,7 +239,7 @@ fallback_symbol(sym_t *sym)
if (!Sflag)
/* __func__ is a C9X feature */
warning(317);
- sym->s_type = incref(gettyp(CHAR), PTR);
+ sym->s_type = derive_type(gettyp(CHAR), PTR);
sym->s_type->t_const = true;
return;
}
@@ -271,7 +269,7 @@ new_name_node(sym_t *sym, int follow_tok
* XXX if tflag is set the symbol should be
* exported to level 0
*/
- sym->s_type = incref(sym->s_type, FUNC);
+ sym->s_type = derive_type(sym->s_type, FUNC);
} else {
fallback_symbol(sym);
}
@@ -288,7 +286,7 @@ new_name_node(sym_t *sym, int follow_tok
n->tn_lvalue = true;
} else {
n->tn_op = CON;
- n->tn_val = tgetblk(sizeof *n->tn_val);
+ n->tn_val = expr_zalloc(sizeof *n->tn_val);
*n->tn_val = sym->s_value;
}
@@ -306,21 +304,21 @@ new_string_node(strg_t *strg)
n = expr_zalloc_tnode();
n->tn_op = STRING;
- n->tn_type = tincref(gettyp(strg->st_tspec), ARRAY);
+ n->tn_type = expr_derive_type(gettyp(strg->st_tspec), ARRAY);
n->tn_type->t_dim = len + 1;
n->tn_lvalue = true;
- n->tn_string = tgetblk(sizeof *n->tn_string);
+ n->tn_string = expr_zalloc(sizeof *n->tn_string);
n->tn_string->st_tspec = strg->st_tspec;
n->tn_string->st_len = len;
if (strg->st_tspec == CHAR) {
- n->tn_string->st_cp = tgetblk(len + 1);
+ n->tn_string->st_cp = expr_zalloc(len + 1);
(void)memcpy(n->tn_string->st_cp, strg->st_cp, len + 1);
free(strg->st_cp);
} else {
size_t size = (len + 1) * sizeof *n->tn_string->st_wcp;
- n->tn_string->st_wcp = tgetblk(size);
+ n->tn_string->st_wcp = expr_zalloc(size);
(void)memcpy(n->tn_string->st_wcp, strg->st_wcp, size);
free(strg->st_wcp);
}
@@ -352,8 +350,9 @@ struct_or_union_member(tnode_t *tn, op_t
rmsym(msym);
msym->s_kind = FMEMBER;
msym->s_scl = MOS;
- msym->s_styp = tgetblk(sizeof *msym->s_styp);
- msym->s_styp->sou_tag = tgetblk(sizeof *msym->s_styp->sou_tag);
+ msym->s_styp = expr_zalloc(sizeof *msym->s_styp);
+ msym->s_styp->sou_tag = expr_zalloc(
+ sizeof *msym->s_styp->sou_tag);
msym->s_styp->sou_tag->s_name = unnamed;
msym->s_value.v_tspec = INT;
return msym;
@@ -698,8 +697,8 @@ cconv(tnode_t *tn)
/* %soperand of '%s' must be lvalue */
gnuism(114, "", modtab[ADDR].m_name);
}
- tn = new_tnode(ADDR, tincref(tn->tn_type->t_subt, PTR),
- tn, NULL);
+ tn = new_tnode(ADDR,
+ expr_derive_type(tn->tn_type->t_subt, PTR), tn, NULL);
}
/*
@@ -2066,7 +2065,7 @@ convert(op_t op, int arg, type_t *tp, tn
ntn->tn_left = tn;
} else {
ntn->tn_op = CON;
- ntn->tn_val = tgetblk(sizeof *ntn->tn_val);
+ ntn->tn_val = expr_zalloc(sizeof *ntn->tn_val);
convert_constant(op, arg, ntn->tn_type, ntn->tn_val,
tn->tn_val);
}
@@ -2684,13 +2683,13 @@ build_struct_access(op_t op, tnode_t *ln
} else if (ln->tn_type->t_tspec != PTR) {
lint_assert(tflag);
lint_assert(is_integer(ln->tn_type->t_tspec));
- ln = convert(NOOP, 0, tincref(gettyp(VOID), PTR), ln);
+ ln = convert(NOOP, 0, expr_derive_type(gettyp(VOID), PTR), ln);
}
- ctn = new_integer_constant_node(PTRDIFF_TSPEC,
+ ctn = expr_new_integer_constant(PTRDIFF_TSPEC,
rn->tn_sym->s_value.v_quad / CHAR_SIZE);
- ntn = new_tnode(PLUS, tincref(rn->tn_type, PTR), ln, ctn);
+ ntn = new_tnode(PLUS, expr_derive_type(rn->tn_type, PTR), ln, ctn);
if (ln->tn_op == CON)
ntn = fold(ntn);
@@ -2719,7 +2718,7 @@ build_prepost_incdec(op_t op, tnode_t *l
if (ln->tn_type->t_tspec == PTR) {
cn = plength(ln->tn_type);
} else {
- cn = new_integer_constant_node(INT, (int64_t)1);
+ cn = expr_new_integer_constant(INT, (int64_t)1);
}
ntn = new_tnode(op, ln->tn_type, ln, cn);
@@ -2739,13 +2738,15 @@ build_real_imag(op_t op, tnode_t *ln)
switch (ln->tn_type->t_tspec) {
case LCOMPLEX:
/* XXX: integer and LDOUBLE don't match. */
- cn = new_integer_constant_node(LDOUBLE, (int64_t)1);
+ cn = expr_new_integer_constant(LDOUBLE, (int64_t)1);
break;
case DCOMPLEX:
- cn = new_integer_constant_node(DOUBLE, (int64_t)1);
+ /* XXX: integer and DOUBLE don't match. */
+ cn = expr_new_integer_constant(DOUBLE, (int64_t)1);
break;
case FCOMPLEX:
- cn = new_integer_constant_node(FLOAT, (int64_t)1);
+ /* XXX: integer and FLOAT don't match. */
+ cn = expr_new_integer_constant(FLOAT, (int64_t)1);
break;
default:
/* __%s__ is illegal for type %s */
@@ -2780,7 +2781,7 @@ build_address(tnode_t *tn, bool noign)
return tn->tn_left;
}
- return new_tnode(ADDR, tincref(tn->tn_type, PTR), tn, NULL);
+ return new_tnode(ADDR, expr_derive_type(tn->tn_type, PTR), tn, NULL);
}
/*
@@ -3037,7 +3038,7 @@ plength(type_t *tp)
if (elsz == 0)
elsz = CHAR_SIZE;
- return new_integer_constant_node(PTRDIFF_TSPEC,
+ return expr_new_integer_constant(PTRDIFF_TSPEC,
(int64_t)(elem * elsz / CHAR_SIZE));
}
@@ -3187,7 +3188,7 @@ fold(tnode_t *tn)
v->v_quad = xsign(q, t, -1);
- cn = new_constant_node(tn->tn_type, v);
+ cn = expr_new_constant(tn->tn_type, v);
if (tn->tn_left->tn_system_dependent)
cn->tn_system_dependent = true;
if (modtab[tn->tn_op].m_binary && tn->tn_right->tn_system_dependent)
@@ -3230,7 +3231,7 @@ fold_test(tnode_t *tn)
lint_assert(/*CONSTCOND*/false);
}
- return new_constant_node(tn->tn_type, v);
+ return expr_new_constant(tn->tn_type, v);
}
/*
@@ -3327,7 +3328,7 @@ fold_float(tnode_t *tn)
fpe = 0;
}
- return new_constant_node(tn->tn_type, v);
+ return expr_new_constant(tn->tn_type, v);
}
@@ -3338,7 +3339,7 @@ tnode_t *
build_sizeof(const type_t *tp)
{
int64_t size_in_bytes = type_size_in_bits(tp) / CHAR_SIZE;
- tnode_t *tn = new_integer_constant_node(SIZEOF_TSPEC, size_in_bytes);
+ tnode_t *tn = expr_new_integer_constant(SIZEOF_TSPEC, size_in_bytes);
tn->tn_system_dependent = true;
return tn;
}
@@ -3356,7 +3357,7 @@ build_offsetof(const type_t *tp, const s
// XXX: wrong size, no checking for sym fixme
int64_t offset_in_bytes = type_size_in_bits(tp) / CHAR_SIZE;
- tnode_t *tn = new_integer_constant_node(SIZEOF_TSPEC, offset_in_bytes);
+ tnode_t *tn = expr_new_integer_constant(SIZEOF_TSPEC, offset_in_bytes);
tn->tn_system_dependent = true;
return tn;
}
@@ -3458,7 +3459,7 @@ build_alignof(const type_t *tp)
break;
}
- return new_integer_constant_node(SIZEOF_TSPEC,
+ return expr_new_integer_constant(SIZEOF_TSPEC,
(int64_t)alignment_in_bits(tp) / CHAR_SIZE);
}
@@ -3567,7 +3568,7 @@ new_function_argument_node(tnode_t *args
* will not change.
*/
if (arg == NULL)
- arg = new_integer_constant_node(INT, (int64_t)0);
+ arg = expr_new_integer_constant(INT, 0);
ntn = new_tnode(PUSH, arg->tn_type, arg, args);
@@ -3789,7 +3790,7 @@ expr(tnode_t *tn, bool vctx, bool tctx,
lint_assert(tn != NULL || nerr != 0);
if (tn == NULL) {
- tfreeblk();
+ expr_free_all();
return;
}
@@ -3824,7 +3825,7 @@ expr(tnode_t *tn, bool vctx, bool tctx,
/* free the tree memory */
if (dofreeblk)
- tfreeblk();
+ expr_free_all();
}
static bool