ez-lang icon indicating copy to clipboard operation
ez-lang copied to clipboard

SSA Transform relies on initializers to create intial name on stack

Open dibyendumajumdar opened this issue 11 months ago • 0 comments

This snippet fails:

                func foo(x: Int) {
                    var z: Int
                    while (x > 0) {
                        z = 5
                        if (x == 1)
                            z = z+1
                        x = x - 1
                    }
                }

While this is okay

                func foo(x: Int) {
                    var z = 0
                    while (x > 0) {
                        z = 5
                        if (x == 1)
                            z = z+1
                        x = x - 1
                    }
                }

The problem seems to be in 2nd block of search() where we look for instructions of form v = x op y. The declaration alone does not generate such an instruction.

Potential solution may be that declaration of a var generates a var instruction that defines the var.

dibyendumajumdar avatar Dec 27 '24 21:12 dibyendumajumdar