diff options
author | Quentin Carbonneaux <quentin@c9x.me> | 2017-07-27 19:48:54 -0400 |
---|---|---|
committer | Quentin Carbonneaux <quentin@c9x.me> | 2017-07-30 11:13:56 -0400 |
commit | 2b64b75c845d0491c7a701e44485d2856eeb686d (patch) | |
tree | 9a0b8819cadaf31a81e534be7a8c6041eff4793d /test | |
parent | 64c79edda0bc29d11b7efaffa9d051f64ea431d0 (diff) | |
download | roux-2b64b75c845d0491c7a701e44485d2856eeb686d.tar.gz |
fix dynamic stack allocs for amd64
The arm64 might have the same problem but it is currently unable to handle them even in instruction selection. Thanks to Jean Dao for reporting the bug.
Diffstat (limited to 'test')
-rw-r--r-- | test/dynalloc.ssa | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/test/dynalloc.ssa b/test/dynalloc.ssa new file mode 100644 index 0000000..7c54e88 --- /dev/null +++ b/test/dynalloc.ssa @@ -0,0 +1,27 @@ +# make sure dynamic allocations +# and caller-save regs interact +# soundly + +function $g() { +@start + ret +} + +function w $f(w %arg) { +@start + call $g() +@alloc + %r =l alloc8 16 + storel 180388626474, %r + %r8 =l add 8, %r + storel 180388626474, %r8 + ret %arg +} + +export +function w $main() { +@start + %a =w call $f(w 0) + %b =w call $f(w 0) + ret %a +} |