gpt4 book ai didi

gcc - LLVM 相当于 gcc 的 __BIGGEST_ALIGNMENT__?

转载 作者:行者123 更新时间:2023-12-04 18:16:13 26 4
gpt4 key购买 nike

GCC 提供了 __BIGGEST_ALIGNMENT__预定义的宏,它是您正在编译的目标机器上的任何数据类型所使用的最大对齐方式。我似乎找不到 LLVM 的等价物。有没有?如果不是,最好的解决方法是什么(最好使用预处理器)?

最佳答案

这不能从预处理器访问,但 __attribute__((aligned))__attribute__((__aligned__)) (省略对齐值)将给出您想要的对齐方式。这应该是所有内置类型中最大的对齐方式,在 x86 和 ARM 上是 16。

例如:

$ cat align.c
struct foo {
char c;
} __attribute__((aligned)) var;
$ clang align.c -S -o - -emit-llvm
...
@var = global %struct.foo zeroinitializer, align 16

这由 unwind.h 用于 _Unwind_Exception:
struct _Unwind_Exception
{
_Unwind_Exception_Class exception_class;
_Unwind_Exception_Cleanup_Fn exception_cleanup;
_Unwind_Word private_1;
_Unwind_Word private_2;

/* @@@ The IA-64 ABI says that this structure must be double-word aligned.
Taking that literally does not make much sense generically. Instead we
provide the maximum alignment required by any type for the machine. */
} __attribute__((__aligned__));

关于gcc - LLVM 相当于 gcc 的 __BIGGEST_ALIGNMENT__?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11656714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com