プラットフォーム固有のフラグ

フラグには特定のプラットフォームでしか意味をなさないものがある。

-msse2:

(x86のみ、GHC 7.0.1より追加) ネイティブコード生成器を使っているとき、浮動小数点演算の実装にSSE2のレジスタと命令セットを用いる。これは浮動小数点性能の相当な向上をもたらすが、出来たコードはSSE2対応のプロセッサ(Intel Pentium 4以降またはAMD Athlon 64以降)でしか走らない。

x86-64プラットフォームでは、無条件にSSE2が使われる。

-monly-[32]-regs:

(x86のみ)GHCはパフォーマンスのために四つのレジスタをGCCから「盗もうと」する。これは大抵うまく行く。しかし、ある種のモジュールでは、四つのレジスタを盗まれた状態でGCCがコンパイルしていると、おそらく次のように言ってクラッシュする。

Foo.hc:533: fixed or forbidden register was spilled.
This may be due to a compiler bug or to impossible asm
statements or clauses.

-monly-N-regsでレジスタをいくつか返してやると良い。まず「3」を試し、次に「2」を試す。「2」でもうまく行かないなら、バグとして報告して頂きたい。