summaryrefslogtreecommitdiff
path: root/tools/d2c/args.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/d2c/args.c')
-rw-r--r--tools/d2c/args.c29
1 files changed, 24 insertions, 5 deletions
diff --git a/tools/d2c/args.c b/tools/d2c/args.c
index 616873b..1a2c287 100644
--- a/tools/d2c/args.c
+++ b/tools/d2c/args.c
@@ -73,7 +73,12 @@ struct _arg_expr_t
union
{
/* CET_NAME */
- char *name; /* Désignation de variable */
+ struct
+ {
+ char *original; /* Désignation non transformée */
+ char *name; /* Désignation de variable */
+
+ };
/* CET_NUMBER */
unsigned long number; /* Valeur durablement définie */
@@ -83,6 +88,7 @@ struct _arg_expr_t
{
char **comp_items; /* Elements à agréger */
size_t comp_count; /* Quantité de ces éléments */
+
};
/* CET_UNARY */
@@ -156,6 +162,7 @@ arg_expr_t *build_arg_expr_from_name(char *name)
result->type = CET_NAME;
+ result->original = strdup(name);
result->name = make_string_lower(name);
return result;
@@ -327,6 +334,7 @@ void delete_arg_expr(arg_expr_t *expr)
switch (expr->type)
{
case CET_NAME:
+ free(expr->original);
free(expr->name);
break;
@@ -392,6 +400,11 @@ bool compute_arg_expr_size(const arg_expr_t *expr, const coding_bits *bits, cons
result = compute_conv_func_size(func, bits, list, size);
}
+ /**
+ * On autorise le passage de constante inconnue par d2c mais valable pour gcc.
+ */
+ else result = true;
+
break;
case CET_COMPOSED:
@@ -590,7 +603,8 @@ bool ensure_arg_expr_content_fully_marked(arg_expr_t *expr, const coding_bits *b
switch (sub->type)
{
case CET_NAME:
- result = mark_by_name(bits, lst, sub->name);
+ /* result = */mark_by_name(bits, lst, sub->name);
+ result = true;
break;
case CET_COMPOSED:
@@ -678,7 +692,8 @@ bool ensure_arg_expr_content_fully_declared(arg_expr_t *expr, int fd, const codi
switch (sub->type)
{
case CET_NAME:
- result = declare_by_name(f, bits, lst, *wide, sub->name);
+ /* result = */declare_by_name(f, bits, lst, *wide, sub->name);
+ result = true;
break;
case CET_COMPOSED:
@@ -762,7 +777,8 @@ bool ensure_arg_expr_content_fully_defined(arg_expr_t *expr, int fd, const char
switch (sub->type)
{
case CET_NAME:
- result = define_by_name(f, bits, lst, info, sub->name);
+ /* result = */define_by_name(f, bits, lst, info, sub->name);
+ result = true;
break;
case CET_COMPOSED:
@@ -824,7 +840,7 @@ bool define_arg_expr(const arg_expr_t *expr, int fd, const coding_bits *bits, co
case CET_NAME:
if (!find_var_by_name(bits, list, expr->name, &field, &func))
- result = false;
+ dprintf(fd, "%s", expr->original);
else
{
@@ -926,6 +942,9 @@ bool define_arg_expr(const arg_expr_t *expr, int fd, const coding_bits *bits, co
switch (expr->bin_op)
{
+ case CBO_AND:
+ dprintf(fd, " & ");
+ break;
case CBO_EOR:
dprintf(fd, " ^ ");
break;