組み込み関数の簡素化のために、intrinsic.c の組み込み変換関数を新しい規則に変更する作業を完了しました。書き換えは、回帰テストを生き延びたようです…
1月27日
本日の大改造。私は、intrinsic.c から約半分のコードを切り取り、それを新しいファイル、simplify.c に入れました。このファイルは、コンパイル時に組み込み関数を評価するために必要な演算を行います。また、新しいヘッダー ファイル、simplify.h もあります。これには、simplify.c とintrinsic.c に残っているものとの間で共通のプロトタイプが含まれています。簡略化関数の呼び出し規約も変更されました。
「a」から「c」までの関数と、初期化式に必要ないくつかのより重要な関数を実行しました。残りは、キャサリンが後で見られるようにコメントアウトされています。まだチェックインの準備ができていません。
1月25日
John Lindsay は、g95 の OS/2 への移植を支援することを申し出ました。移植性に関する最大の問題はおそらくランタイム ライブラリでしょうが、まだ比較的浅いうちに落とし穴がどこにあるかを見つけるために、現在存在する g95 のコンパイルを開始することを彼に提案しました。
式が初期化式かどうかをチェックする基本機能の追加が完了しました。配列コンストラクターは遅くなったためテストされていませんが、残りは機能しているようです。私はまた、合法性をめぐる苦悩が
パラメータ (i=huge(a))
宣言されていない A はばかげていたからです。答えは簡単です。これは正当ではありません。初期化式の関数への引数は、それ自体が初期化式でなければならないからです。A が定数でない場合、それは初期化式ではなく、式全体が初期化式ではありません。
最近出てきたいくつかのミニ プロジェクトで貢献ページを更新しましたが、それほど難しいものではありません。
1月23日
Tobi Schlüter さんは、’.for’ 拡張子を認識するパッチを送信しました。
Rob Cermak と私は 1 日に数通のメールを交換しました。私たちが抱えていた問題は、LAPACK テスト スイートでのパフォーマンスが非常に低いことでした。搭載されている大きなモジュールと関係があると推測しましたが、何が問題なのかはまだわかりません。
サンプル ファイルのプロファイルを作成すると、プログラムが実際にモジュールからの読み取り時間の約 75% を費やしていることがわかりました。合計時間 (プロファイリングのオーバーヘッドを含む) が約 5 秒であることがわかったとき、謎は深まりました。問題は、このファイルをコンパイルするのに実時間で約 22 秒かかったことです。シェルの組み込みの「time」コマンドは、「システム」時間に 17 秒が与えられていることを明らかにしました。
モジュールの読み取り中、g95 は主に fgetc() および fsetpos() ライブラリ関数を呼び出しています。C ライブラリは完全にバッファリングされている必要があり、処理に時間がかかる理由がわかりません。これはSolaris上です(もちろん、「Slowlaris」と呼ばれることもあります…)