5
union u{
 char ch[41];
 int b[10];  
}un;

LLVM はこれにコンパイルします

%union.u = type { [10 x i32], [4 x i8] }

この

union un{
  struct s{
    int a;
    float f;
    double d;
  }st;

  int intArr[10];
}uno;

これにコンパイルされます

%union.un = type { %struct.s, [24 x i8] }
%struct.s = type { i32, float, double }

ユニオン型がどのように派生するかを説明できる人はいますか?

4

1 に答える 1

4

最初のメンバーは、ユニオンの中で最も整列されたメンバーであり(そのようなメンバーが複数ある場合は、任意に1つを選択します)、適切なサイズにするためにi8の配列が追加されます。

于 2012-10-06T06:06:31.960 に答える