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.
This commit is contained in:
parent
d9b0d77cf2
commit
cde5f95591
2 changed files with 30 additions and 1 deletions
27
test/load1.ssa
Normal file
27
test/load1.ssa
Normal file
|
@ -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);
|
||||
# }
|
||||
# <<<
|
Loading…
Add table
Add a link
Reference in a new issue