From 44c330d647c3e1a17e7169f5aa5abb322166fdae Mon Sep 17 00:00:00 2001 From: Philip Date: Tue, 28 Apr 2015 09:23:29 +0000 Subject: VLA fix: save stack pointer right after modification This patch disables the optimization of saving stack pointers lazily, which didn't fully take into account that control flow might not reach the stack-saving instructions. I've decided to leave in the extra calls to vla_sp_save() in case anyone wants to restore this optimization. Tests added and enabled. There are two remaining bugs: VLA variables can be modified, and jumping into the scope of a declared VLA will cause a segfault rather than a compiler error. Both of these do not affect correct C code, but should be fixed at some point. Once VLA variables have been made properly immutable, we can share them with the saved stack pointer and save stack and instructions. --- tests/tests2/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'tests/tests2/Makefile') diff --git a/tests/tests2/Makefile b/tests/tests2/Makefile index 6148c0b..a441674 100644 --- a/tests/tests2/Makefile +++ b/tests/tests2/Makefile @@ -96,9 +96,9 @@ TESTS = \ 74_nocode_wanted.test \ 75_array_in_struct_init.test \ 76_dollars_in_identifiers.test \ - 77_push_pop_macro.test -# 78_vla_label.test -- currently broken -# 79_vla_continue.test -- currently broken + 77_push_pop_macro.test \ + 78_vla_label.test \ + 79_vla_continue.test # 34_array_assignment.test -- array assignment is not in C standard -- cgit v1.3.1