comparison Changes @ 438:626d705471d5 lazy-branch

Unexecuted code in conditional. Lazy jmp code generation.
author kono
date Mon, 15 Nov 2004 20:33:30 +0900
parents 49d4483d5110
children a531bbf572e3
comparison
equal deleted inserted replaced
437:49d4483d5110 438:626d705471d5
6636 list3(LABEL,next,label) 6636 list3(LABEL,next,label)
6637 list3(COMMENT,next,comment) (?) 6637 list3(COMMENT,next,comment) (?)
6638 6638
6639 (1) make inline tree 6639 (1) make inline tree
6640 (2) evaluate inline function (copy and partial evaluation) 6640 (2) evaluate inline function (copy and partial evaluation)
6641 6641 peval(inline_func,args)
6642 6642 similar to the function call (with type check)
6643 6643
6644 6644 const いるのかなあ。
6645 builtin_constant_p かぁ。
6646
6647 Mon Nov 15 17:37:57 JST 2004
6648
6649 code hoge() { a; }
6650 code hoge1() { b; }
6651
6652 では、a-> b に、そのまま落ちるべきだろうね。ファイルが分離される
6653 場合は少し困るが....
6654
6655 if (0) hoge; でhogeが生成されてしまう。control で切っても出るね。
6656 いや、消えてました。ただ、jmp は生成されてしまうね。checkret
6657 で、チェックするべきでしょう。
6658
6659 checkret は、control が生成されるところで呼ばれるわけだから、本来は
6660 control=1 にするのは、checkret だけであるべき。
6661 jmp(hoge) は、pending_jmp
6662 を設定して、checkret で、pending_jmp を生成するわけだが。
6663 で、pending jmp が設定したlabelに等しければ、pending_jmp は0に
6664 設定される(しかしreferenceされたかも知れないからlabelは生成する?)
6665 label にreferenceしたかどうかのflagを付けた方が良い?
6666
6667 if (1) hoge else fuga ; で fuga が生成されてしまう。bexpr で
6668 always jump かどうかを返したいところだが...