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.
This commit is contained in:
@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user