Tag: llvm ir

Clang – 将C头编译为LLVM IR / bitcode

假设我有以下简单的C头文件: // foo1.h typedef int foo; typedef struct { foo a; char const* b; } bar; bar baz(foo*, bar*, …); 我的目标是获取此文件,并生成一个如下所示的LLVM模块 : %struct.bar = type { i32, i8* } declare { i32, i8* } @baz(i32*, %struct.bar*, …) 换句话说,将带有声明的C .h文件转换为等效的LLVM IR,包括类型解析,宏扩展等。 通过Clang传递它来生成LLVM IR会产生一个空模块(因为实际上没有使用任何定义): $ clang -cc1 -S -emit-llvm foo1.h -o – ; ModuleID = ‘foo1.h’ target […]