>>141
イヤそれをどうやってんのって話
オレが当然こういうimplementだろうと思ってたのはこう

whichFooが呼ばれてstackが割り当てられる(でもおそらくそのプロセスに割り当てられてるスタックのスタックポインタの上端もらってくるだけだと思うけど)
もらったstackに上から詰めてFoo型のaとbができる
普通に考えて上端から順にaのための領域、bのための領域
この2つは返り値として使用される可能性があるからmainのstackの下端のすぐ下に作ってはおくけどどちらが使われるかは不定

①呼び出し前(♪がsp)
[  未使用域  ]♪| [mainのstack ]
②1回目呼び出し直後
[未使用域]♪[ b ][ a ]| [mainのstack ]

実行時に[a]が返される事が確定、bは破棄されて[a]の真下にspを戻してmainの再開から2回目呼び出されて同じく[a],[b]が作られる

③2回目呼び出し直後
[  未使用域  ]♪[ a ]| mainのstack ]
④2回目の変数領域確保
[未使用域]♪[ b ][a'][ a ]| [mainのstack ]
⑤2回目の変数領域確保
[ 未使用域 ]♪[a'][ a ]| [mainのstack ]

となると予想したら違った