LLVM IR を使用して構造データを生成しています。
例えば:
struct mystruct {int a:1; int b:2; unsigned long c} = {{1, 2, 3}};
ドキュメントを読んでデモを試してみましたが、API ではユーザーがパディングと値の組み合わせを自分で処理する必要があるようです。
次のように構造体をもっと簡単に作成する方法はありますか:
fields.push_back(Type::getIntNTy(context, 1));
fields.push_back(Type::getIntNTy(context, 2));
fields.push_back(Type::getIntNTy(context, 64));
structTy.setBody(fields, false /* isPacked*/);
レイアウト作業は本当に大変で、バグが発生する可能性が非常に高いです。初期化子の値を組み合わせるのも大変です。
私の理解では、構造体がパックされていないことをllvm APIに伝えると、自動的にパディングを処理するはずですよね?
コメントはありますか?