[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
以下の機能はあまりちゃんとは動いていない。 これらが存在するのは、80386 の 80387 コプロセッサ向けのコードを正しく 生成するのに必要とされるからである。 これはもはやマシン記述では使われておらず、将来のバージョンでは削除 される可能性がある。なので使わないように。
OVERLAPPING_REGNO_P (regno)
定義されていれば、C の式である。この式は、ハードレジスタ番号 regno がオーバーラップレジスタなら、ゼロでない値となる。 これは、あるハードレジスタが異なる番号のハードレジスタとオーバーラップ しているということを意味する。(このオーバーラップは望ましくないことだが、 これがないとサポートできないようなマシンをサポートすることができる。) このマクロは、お互いにオーバーラップしている全てのレジスタについて ゼロでない値を返さなければならない。GNU CC は、オーバーラップレジスタを ある限られた方法でしか使うことができない。基本ブロック内の 割当に使うことができ、再ロードで落とされてしまう可能性がある。 それで全てである。
このマクロが定義されていないと、お互いにオーバーラップする ハードレジスタはないということになる。それが普通だ。
INSN_CLOBBERS_REGNO_P (insn, regno)
定義されていれば、C の式である。この式の値は、 insn insn が、ハードレジスタ番号 regno の内容を 未知の力により破壊されてしまう効果を持っている場合は ゼロでない値にすべきである。 「未知の力」とはこの場合、その insn の RTL 式はそのような効果を 記述していないということである。
このマクロが定義されていないと、未知の力でレジスタの内容を 破壊する insn は存在しないということを意味する。 それが普通の状況である。その他のものがすべて同じなら、 RTL 式を見ればその全ての動作がわかるというのが最も良いのである。
This document was generated
using texi2html 1.78.