| 日本−日本語 |
|
|
|
![]() |
HP aC++/HP ANSI C バージョン A.06.05 リリースノート > 第1章 HP aC++/HP ANSI C リリースノートこのバージョンの概要 |
|
この項では、このバージョンの HP aC++/HP C コンパイラで導入された新機能の概要を説明します。 HP aC++ コンパイラのバージョン A.06.05 は、次の新しいオプションとプラグマをサポートしています。 +Oprofile=collect[:flavor] オプションに loopiter が追加され、ループ繰り返し数の収集ができるようになりました。 +Oprofile=collect でコンパイルを行う際に、生成された実装済み実行可能プログラム用のあて先フローファイルを指定することはできません。 その代わりに、+Oprofile=collect でコンパイルした実行可能プログラムを実行する前に、FLOW_DATA 環境変数に希望のパス名を設定します。 実行中に複数の実装済みバイナリが特定の flow.data ファイルを更新しようとすると、データが別の接尾辞 (例: flow.XXX) を持つファイルに書き込まれる場合があります。 これは、fork() とexec() を使用して実行プロセスの収集を作成するパラレルプログラムに対して行われることがあります。 このオプションは、32 ビットのアプリケーションを 64 ビットに変換する際に潜在的な問題を検出するのに役立つ警告を有効にします。 +w64bit オプションは、64 ビットにコンパイルする場合 (+DD64を使用) にのみ適用します。 このオプションは、+M2 オプションと同等です。 このオプションは、本リリースでは無効になっている複数のドライバ警告を有効にします。 これらは、Integrity サーバーでは既に無効な一部の PA-RISC オプション用の警告です。 このオプションは、lint と同様の機能を提供する複数のリマークと警告を有効にします。 これらのコンパイル時の診断は、ソースコード内の潜在的な問題を検出するのに非常に役立ちます。 このオプションは、コンパイル時の潜在的なセキュリティ違反の診断を有効にします。 信頼性のないデータがプログラムにおけるクリティカルな基準に達している場合、警告が発行されます。 これはコンパイラによって実行されるクロスモジュール分析に基づいています。 +wsecurity オプションは、-ipo または +O4 オプションが指定されていない場合でも、クロスモジュール分析の一部を暗黙的に有効にします。 このオプションは、結果として +wsecurity オプションを使用しないビルドに比べて、コンパイル時間の増大に繋がる可能性があります。 このオプションを使用すると、ユーザーが指定した最適化レベル以外の最適化をコンパイラが実行する場合があります。 +wsecurity を -ipo または +O4に追加して使用すると、コードの生成に影響は出ず、コンパイル時間もそれほど増えることはありません。 +check=type オプションは、ユーザープログラム内の一般的なコーディングエラーを検出するための追加の実行時チェックを提供します。 使用法: +check=all|none|bounds|malloc|stack|uninit このオプションは、配列変数への配列外参照のチェックを有効にします。 1 つの配列要素に対する各参照をチェックします。 チェックが失敗すると、エラーメッセージが表示され、プログラムが中断します。 +check=bounds オプションが適用できるのは、ローカル変数、グローバル配列変数、および構造体の配列フィールドへの参照だけです。 このオプションは、実行時のメモリーリークとヒープ破損のチェックを有効にします。 その結果、ヒープオブジェクトの境界を越えた書き込みや、有効なヒープオブジェクトではないポインタやメモリー不足の状態などに対する free または relloc 呼び出しのせいで、ユーザープログラムが停止することがあります。 メモリーリーク情報が捕捉され、ログファイルに書き込まれます (プログラムが存在する場合)。 ログファイル名はプログラムが終了する前に出力されます。 このオプションは、スタック境界外への書き込みを検出する実行時チェックを有効にします。 すべてのスタックフレームの前後、および一部のスタック変数の周辺にマーカーが配置されます。 プロシージャの終了時にチェックが行われ、上書きされているマーカーがあるかどうかを調べます。 スタックチェックが失敗すると、エラーメッセージとスタックトレースが stderr に書き込まれ、プログラムが中断します。 スタックチェックは、特定のプロシージャ (longjmp()、exit()、abort() の使用、または例外処理など) の異常終了では実行されません。 +Ointeger_overflow=moderate のデフォルトが、最適化レベル 2 に変更されました。 この変更は、より幅広いアプリケーションクラスを最適化レベルでコンパイルし、正しく実行できるようにするために行われました。 以前は、すべての最適化レベルのデフォルトは、+Ointeger_overflow=aggressive でした。 このオプションは、最適な実行スピードと適切なビルド時間のためのコンパイルとリンクオプションの組み合わせを選択します。 バージョン A.06.05 では、次のようになります。+O2 +Onolimit +Olibcalls +Ointeger_overflow=aggressive +Ofltacc=relaxed +DSnative +FPD -Wl,+pi,4M -Wl,+pd,4M -Wl,+mergeseg
本リリースでインラインオプションの制御機能が改善され、コンパイラコンポーネント全体の一貫性が向上しました。 HLO および aCC5 FE が SYZYGY フェーズに変更され、インラインを処理できるようになりました。 本リリースで、aC++ がシステムヘッダーファイルからのエントリを別々にインタプリトできるようになりました。 /usr/include からのエントリ (TARGETROOT の変更が可能) はシステム API エントリと見なされ、デフォルトのバインディングを自動的に受け取ります。ただし、この動作をオーバーライドするエントリ用のプラグマが存在する場合は除きます。 このオプションは、テンプレート関数の案内宣言 (guiding declaration) の認識を有効にします。 案内宣言 (guiding declaration) は、関数テンプレートのインスタンスと一致する関数宣言ですが、その定義は関数テンプレートそのものから派生しているため、明示的宣言はありません。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||