diff options
| -rw-r--r-- | main.c | 2 | ||||
| -rw-r--r-- | tests/039.sh | 32 |
2 files changed, 33 insertions, 1 deletions
@@ -1481,7 +1481,7 @@ void gen_deref_expr(struct CodeGen* g, struct AstNode* ast, int gen_mode) { gen_expr(g, ast->expr1, GEN_RVAL); } else { gen_expr(g, ast->expr1, GEN_RVAL); - gen_lval2rval(ast->expr1->ty); + gen_lval2rval(ast->expr1->ty->to); } } diff --git a/tests/039.sh b/tests/039.sh new file mode 100644 index 0000000..fb9dbdb --- /dev/null +++ b/tests/039.sh @@ -0,0 +1,32 @@ +set -e + +cat <<'EOF' > expected +65 +65 +66 +67 +68 +EOF +bash ../../test_diff.sh <<'EOF' +void* calloc(); +int printf(); + +int main() { + char* source = calloc(4, sizeof(char)); + + source[0] = 'A'; + source[1] = 'B'; + source[2] = 'C'; + source[3] = 'D'; + + int a = source[0]; + + printf("%d\n", a); + printf("%d\n", source[0]); + printf("%d\n", source[1]); + printf("%d\n", source[2]); + printf("%d\n", source[3]); + + return 0; +} +EOF |
