diff options
author | Quentin Carbonneaux <quentin@c9x.me> | 2019-02-18 13:47:33 +0100 |
---|---|---|
committer | Quentin Carbonneaux <quentin@c9x.me> | 2019-02-18 13:56:03 +0100 |
commit | cde5f95591b6f38df235ac16ee7ee979ec19bd09 (patch) | |
tree | 84443f9ab1c20761b59c833e66a804144ae62235 /test | |
parent | d9b0d77cf20cb8340bc4a77b66aa8cb56c75b496 (diff) | |
download | roux-cde5f95591b6f38df235ac16ee7ee979ec19bd09.tar.gz |
mark phi arguments as escaping
Thanks to Michael Forney for spotting this oversight and providing the test case. Note: because esc() leaves ABot unchanged, the assertion "a->type == ABot" on line 122 remains valid.
Diffstat (limited to 'test')
-rw-r--r-- | test/load1.ssa | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/test/load1.ssa b/test/load1.ssa new file mode 100644 index 0000000..a87fd2d --- /dev/null +++ b/test/load1.ssa @@ -0,0 +1,27 @@ +# checks that phi arguments are correctly +# handled in alias analysis + +export +function w $f(w %cond) { +@start + %x =l alloc4 4 + %y =l alloc4 4 + storew 0, %x + jnz %cond, @true, @false +@true + jmp @end +@false + jmp @end +@end + %ptr =l phi @true %x, @false %y + storew 1, %ptr + %result =w loadsw %x + ret %result +} + +# >>> driver +# extern int f(int); +# int main() { +# return !(f(0) == 0 && f(1) == 1); +# } +# <<< |