g95_find_symbol() と g95_get_symbol() のアクションを組み合わせた新しいサブルーチン g95_find_get_symbol() が追加されました。両方を行っている場所がいくつかあり、g95_get_symbol() を呼び出すすべての場所を調べました。これは、g95_get_symbol() が少し前に微妙な方法で変更されたためです。
Steven Bosshcer さんは、設定オプションを新しいファイル lang-options.h に移動するためのパッチを送信しました。これは、g77 がオプションを保存する方法であり、これらすべてのオプションを保存する単一の文字列は、C 標準で許可されているよりも大きくなりました (ただし、gcc はとにかくそれを処理しました)。
-r オプションも削除しました。すべての手続きが型解決されたので、globsol で発見された新しいバグに取り組み始めます。
1月3日
Steven Bosscher は、提案された GCC の中間表現に関する GCC リストに関する議論を提起しました。この表現は、バックエンドに接続するための現在の唯一の選択肢であったツリー表現よりも高いレベルで動作します。GCC の人々が SIMPLE を進めれば、g95 は大いに役立つはずです。
今夜は解決の問題にもう少し時間を費やしました。十数個の小さな問題を修正した後、globsol 内のすべてのファイルが解析および解決されます。残念ながら、これは思ったほど良くありません。現在、モジュールのみが解決されているため、モジュール外の globsol ソースは解決されていません。楽しみのために、無条件解決をオンにしてスイートを再実行しました。約 20 の新しいバグを追跡する必要があります。おそらく -r を取り除き、解決策を常にオンにするつもりです。
1月2日
Michael Richmond は、さらにいくつかの問題を書いています。サブルーチンが別の戻り仕様で定義されたときのコアダンプに関して、彼がしばらく前に送ったメールに最初に取り組みました。
サブルーチン FOO(*)
これには、代替戻り指定子の処理方法を少し書き直す必要がありました。戻り指定子は実引数リストの代替戻りラベルと一致する必要があるため、それらは個別のリストではなく仮引数リストに入れられるようになりました。
次の 2 つの問題は、型解決の順序に関係していました。関数ノードに RESULT 変数がある場合、関数型をその型からコピーする必要があります。通常のデフォルトの型設定が行われると、関数が変数の前に設定され、問題が発生する可能性があります。現在のメソッドは名前空間を走査し、結果ノードを持つ関数を探します。型指定されていない場合は、結果変数を調べて、まだ型がない場合は既定の型に設定します。次に、新しい型が関数にコピーされます。
このハンドラーは、もともと resolve_symbol() サブルーチンに組み込まれていましたが、順序付けの問題が発生しました。ここでの方法は、必要な順序で配置できる小さな単一操作サブルーチンを作成することだと思います。
Steven Bosscher は g95 を GCC 3.1 でコンパイルし、interface.c の alloca() には #include が必要であることを指摘しました. もう 1 つの問題は、display_help() の長い文字列で、おそらく lang-options.h に移動する必要があります。
次の問題は、2 項組み込み演算子を認識できないことでした。問題は、関数ではなくサブルーチンのインターフェイスを検索していたことです。適切な機能を検索すると機能しました。これにより、globsol での成功したコンパイルの数が 110 から 224 (425 のうち) に倍増しました。自動回帰テストは明らかに、近いうちに修正する必要があります。
パーサーが基本的に完成したという事実を反映するために Web ページを更新し、かなり長い間型解決フェーズに取り組んできました。時々、上を見上げて自分がどこにいるかを確認するのを忘れます。また、休暇中に g95 に関するメモをいくつか作成しました。