[MLton] selects re 0 referenced?!

Lukasz S Ziarek lziarek@cs.purdue.edu
Wed, 25 Feb 2004 18:21:55 -0500 (EST)


So after hacking for a few hours as to why selecting after a primapp was
generating all sorts of bugs, I finally figured out WHY! The first snippet
of ssa code is before my flatten pass, and it gets transformed into my
second pass.


 L_907 (x_1495)
    x_1517 = #2 x_1495
    x_1498 = #1 x_1495
    x_1500 = #5 x_1498
    x_1509 = #4 x_1498
    x_1516 = Ref_deref (x_1509)
    x_1513 = #3 x_1516
    x_1514 = #2 x_1516
    x_1515 = #1 x_1516
    x_1512 = Real64_sub (x_1515, x_1322)
    x_1511 = Real64_sub (x_1514, x_1321)
    x_1510 = Real64_sub (x_1513, x_1320)




L_907 (x_2081, x_2080, x_2079, x_2078, x_2077, x_2076)
    x_1516 = Ref_deref (x_2078)
    x_2087 = #2 x_1516
    x_2086 = #3 x_1516
    x_2085 = #4 x_1516
    x_1512 = Real64_sub (x_2087, x_1322)
    x_1511 = Real64_sub (x_2086, x_1321)
    x_1510 = Real64_sub (x_2085, x_1320)
    x_1508 = (x_1512, x_1511, x_1510)


If you notice I select out 2,3,4 instead of 1,2,3. Apparently somewhere
under the hood, some part of the compiler adds 1 to the select index.
Since internally, i am assuming, it is 0 indexed. Wow that caused a
debugging head ache =). I was treating selects as 1 indexed!

Luke