summaryrefslogtreecommitdiff
path: root/graph.c
diff options
context:
space:
mode:
authorSøren Sandmann <sandmann@redhat.com>2007-10-18 03:23:13 -0400
committerSøren Sandmann <sandmann@redhat.com>2007-10-18 03:23:13 -0400
commit96a289be9ed694e89f55aec28c98a63515cd95b3 (patch)
treed8ce7c80e49a50a517b1572af5f6eaf87ee2cf8c /graph.c
parent0a1cf87703944156cf885eb3f437ca2e425546d2 (diff)
Print out literal nodes
Diffstat (limited to 'graph.c')
-rw-r--r--graph.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/graph.c b/graph.c
index 1d6bb4b..64b04d6 100644
--- a/graph.c
+++ b/graph.c
@@ -115,12 +115,14 @@ node_new_if (label_node_t *taken,
static node_t *
node_new_literal (value_t value,
+ ast_type_spec_t *type,
node_t *pred,
ast_t *ast)
{
node_t *node = node_new (NODE_LITERAL, pred, ast);
node->literal.value = value;
+ node->literal.type_spec = type;
return node;
}
@@ -479,17 +481,17 @@ graph_expression (ast_expression_t *expr,
case AST_INT_LITERAL_EXPRESSION:
value.int32_val = expr->int_literal.value;
- node = node_new_literal (value, node, ast);
+ node = node_new_literal (value, expr->common.type_spec, node, ast);
break;
case AST_BOOL_LITERAL_EXPRESSION:
value.bool_val = expr->bool_literal.value;
- node = node_new_literal (value, node, ast);
+ node = node_new_literal (value, expr->common.type_spec, node, ast);
break;
case AST_NULL_EXPRESSION:
value.pointer_val = NULL;
- node = node_new_literal (value, node, ast);
+ node = node_new_literal (value, expr->common.type_spec, node, ast);
break;
case AST_VOID_EXPRESSION:
@@ -517,7 +519,8 @@ graph_expression (ast_expression_t *expr,
}
value.int32_val = 1;
- node = node_new_literal (value, node, ast);
+ node = node_new_literal (
+ value, expr->unary.expr->common.type_spec, node, ast);
if (expr->unary.operator == AST_POSTFIX_DEC ||
expr->unary.operator == AST_PREFIX_DEC)
@@ -740,7 +743,9 @@ graph_switch_statement (ast_switch_statement_t *switch_, node_t *node)
case_ = &cases[i]->expression;
node = node_new_dup (node, ast);
- node = node_new_literal (case_->value, node, ast);
+ node = node_new_literal (case_->value,
+ case_->expression->common.type_spec,
+ node, ast);
node = node_new_binop (
AST_EQUAL,
switch_->condition->common.type_spec,