Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我注意到在 LLVM IR 中有一些很长的类型,例如i256, i256*. 但是,即使我unsigned long long将变量编译为 LLVM IR,其对应的类型也是i64.
i256
i256*
unsigned long long
i64
所以我的问题是,什么样的C/C++变量可以编译成i256LLVM IR 中的变量?谢谢。
C/C++
您可以使用位域结构来获取内部i256数据类型。例如 :
typedef struct { unsigned long long a : 64 ; unsigned long long b : 64 ; unsigned long long c : 64 ; unsigned long long d : 64 ; } S; S a = {1,1}; S f() { return a; }
使用选项编译:clang -emit-llvm -g0 -O0
clang -emit-llvm -g0 -O0
生成的IR如下:
%struct.S = type { i256 }
链接:https ://godbolt.org/z/QufAIn