19

gcc でコンパイルされたプログラムをプロファイリングしているときに、foo.isra.3. とはどういうisra意味ですか? 関数の 1 つがいくつかの場所でしか呼び出されず、引数の 1 つが常にリテラル値として指定されていることに気付きました。多分それは、特定の引数用に最適化された関数のバリアントであることを意味しますか?

4

1 に答える 1

27

このバグレポートのコメント(および私が見つけた同様のコメント) によると:

ISRA は、IPA SRA によって作成される変数の名前です...

IPA SRA は最適化オプションです。

-fipa-sra

集合体の手続き間のスカラー置換、未使用のパラメーターの削除、および参照によって渡されたパラメーターを値によって渡されたパラメーターに置き換えることを実行します。

レベル -O2、-O3、および -Os で有効です。

おそらく、これらの最適化を行った関数のバージョンです。

あなたが言及した場合、リテラルを参照渡しする意味がないことがわかっているため、参照渡しを値渡しに置き換えている可能性があります。

于 2012-12-20T00:04:13.910 に答える