私は、包括的なコールグラフを生成しようとしています(Linux、ランタイム、ロットへの低レベルの呼び出しを完了しています)。GCCとエジプトを使用した包括的なコールグラフの生成
私はソースファイルを "-fdump-rtl-expand"で静的にコンパイルし、RTLファイルを作成しました。これをエジプトと呼ばれるPERLスクリプト(Graphviz/Dotと思われます)に渡して、コールグラフ。これは完璧に動作し、全く問題はありません。
ただし、組み込みとして表示されているライブラリがいくつかあります。私は、コールグラフが印刷されないようにする方法があり、代わりに実際の呼び出しがライブラリに作られているかどうかを探していましたか?
質問が不明な場合はお知らせください。
基本的に、私はそれをする方法はあり<ビルトイン>
生成からのコールグラフを避けるためにしようとしていますか?私はソースからのCilkライブラリをコンパイル---------
#include <cilk/cilk.h>
#include <stdio.h>
#include <stdlib.h>
unsigned long int t0, t5;
unsigned int NOSPAWN_THRESHOLD = 32;
int fib_nospawn(int n)
{
if (n < 2)
return n;
else
{
int x = fib_nospawn(n-1);
int y = fib_nospawn(n-2);
return x + y;
}
}
// spawning fibonacci function
int fib(long int n)
{
long int x, y;
if (n < 2)
return n;
else if (n <= NOSPAWN_THRESHOLD)
{
x = fib_nospawn(n-1);
y = fib_nospawn(n-2);
return x + y;
}
else
{
x = cilk_spawn fib(n-1);
y = cilk_spawn fib(n-2);
cilk_sync;
return x + y;
}
}
int main(int argc, char *argv[])
{
int n;
long int result;
long int exec_time;
n = atoi(argv[1]);
NOSPAWN_THRESHOLD = atoi(argv[2]);
result = fib(n);
printf("%ld\n", result);
return 0;
}
-------- CODE。
「」を生成するサンプルコードを投稿できますか?私が試したコードは 'egtpt'の' rtl'または 'dotty'出力に' built-in'を生成しませんでした。また、 ''ノードまたはその子ノードを削除するだけですか?そして、私は 'egypt -omit'オプションがあなたの要求を満たしていないと仮定します。また、使用しているgccのバージョンとその他のコマンドラインオプションは何ですか?私がgcc 4.1.2から抜けたrtlファイルには、パラメータの説明は含まれていませんでした。 –
ありがとうございました... – boffin
質問にEDITとしてコードを追加しました。後でコンパイルプロセスの後にダンプをベースにする方が良いかもしれませんか? Expandは後で取り除かれるたくさんの塊を作り出します。すべての機能を表示するには、インライン展開を無効にする必要があります。 – ams