2

次の C 構造体定義があるとします。

struct stringStructure
{
    char *stringVariable;
};

上記の場合、Clang は次の LLVM IR を生成します。

%struct.stringStructure = type { i8* }

...これには、変数 identifier を除くすべてが私の定義に含まれますstringVariable

アプリケーション (LLVM C++ API を使用) から名前で参照できるように、生成された LLVM IR に識別子をエクスポートする方法を見つけたいと思います。

annotate次のように、属性を追加しようとしました。

    char *stringVariable __attribute__((annotate("stringVariable")));

...しかし、注釈はうまくいかないようです (構造はまだ として定義されていますtype { i8* })。

何か案は?

4

1 に答える 1

1

LLVM IR は、ソース言語の多くの機能を保持していません。次のようなコードでこれを確認できます

struct Foo {
   char *a;
};

struct Bar {
   char *a;
};

LLVM の型は構造的に同等であるため、発行される型は 1 つだけです。ソースコードの構成に関する任意の情報を保持したい場合は、デバッグ情報を発行/使用する必要があります。

于 2011-02-07T07:23:07.937 に答える