comparison Changes @ 416:a6ed0575d731

ARM goto code, Parallel assignment
author kono
date Sun, 24 Oct 2004 21:07:46 +0900
parents 0a4416b34d4a
children 98888da30b35
comparison
equal deleted inserted replaced
415:bdf900926f32 416:a6ed0575d731
6172 emit_pop_free する時に、その一部がRET_LREGと重なっていて、 6172 emit_pop_free する時に、その一部がRET_LREGと重なっていて、
6173 一緒にfreeされてしまう。そうすると、次のemit_popで、上書きされてしまう。 6173 一緒にfreeされてしまう。そうすると、次のemit_popで、上書きされてしまう。
6174 なので、RET_LREGにしないで、lmove してしまうのが良い。 6174 なので、RET_LREGにしないで、lmove してしまうのが良い。
6175 6175
6176 align がおかしい 6176 align がおかしい
6177
6178 Sat Oct 23 23:33:11 JST 2004
6179
6180 struct を使った interface をregister にmapするかどうか。まぁ、
6181 難しいけどね。
6182
6183 やっぱりarmのbitfieldを合わせるのは止めた方がいいんじゃない?
6184 long long 以外は、型を大きくして対応できる。long long のはみ出し
6185 は、ちょっと対処できない。
6186 a:8 => a0:4<<4+a1:4
6187 a:8 = hoge => a0:4 = hoge<<4, a1:4 = hoge;
6188 というように分解する?
6189
6190 Sun Oct 24 14:19:13 JST 2004
6191
6192 code_frame_pointer と code_environment は同じなんですけど...
6193
6194 巨大な構造体を並列代入すると、
6195
6196 自分自身が重なっている
6197 |----------|
6198 |----------|
6199
6200 では、
6201 |----------|
6202 --copy-> |----------|
6203 他のものを代入
6204 <-copy--
6205 |----------|
6206 ってことになる。
6207
6208 これは、ちょっと手間が大きい。
6209 |--|---|---|
6210 |--|---|---|
6211 と分割する(分割が細かくならない?)
6212 |---|--|---|
6213 |---|--|---|
6214
6215 分割はだめだね。自分自身しか重なってないのだったらoverappable copy
6216 する。
6217 |----------|----------|----------|
6218 |----------|----------|----------|
6219
6220 circular dependency はrecursive callする必要はないね。
6221
6222 なんか、構造体が一度、スタックにあげられてから戻されているみたい
6223
6224 RSTRUCT って、本当にいるの?
6225
6226 なんか、「まだ、emit_copy が間違っている!」
6227
6228 PowerPC は、code のレジスタに割り当てられた分のスタック上の引数
6229 を割り当てているな。なので、
6230 ## code carg6(int i, int j,int k,int l,struct arg args0)
6231 ## goto carg3(args0,args0,i,j,k,l);
6232 で、args0 のcopyが余計に出るね。 しかもずれ方が変。
6233
6234 無害ではあるんだが...
6235
6236 でも、それでバグを見つけたわけか。
6237
6238 だいぶ、enbug しちゃったよ...