是否有可能将C++类编译成LLVM bitcode?每当我编译这样的类
class MyClass {
public:
MyClass {};
int i() { return 0; };
};
Run Code Online (Sandbox Code Playgroud)
使用clang -emit-llvm -c MyClass.cpp -o MyClass.bc生成的bitcode文件似乎是空的:llvm-nm MyClass.bc不返回任何内容.
有没有办法让这项工作?
干杯,
曼努埃尔
nm不会返回任何内容,因为您没有实例化任何对象.您的整个代码已经过优化.将其添加到您的代码中,您将看到它已构建:
class MyClass {
public:
MyClass() {};
int i() { return 0; };
int j(int x);
};
int MyClass::j(int x) {
return x + 2;
}
Run Code Online (Sandbox Code Playgroud)
现在你有建设的东西
$ clang -emit-llvm -c class.cpp
$ nm class.o
---------------- T __ZN7MyClass1jEi
$ clang -emit-llvm -S class.cpp
$ cat class.s
; ModuleID = 'class.cpp'
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
target triple = "x86_64-apple-macosx10.6.7"
%class.MyClass = type { i8 }
define i32 @_ZN7MyClass1jEi(%class.MyClass* %this, i32 %x) nounwind ssp align 2 {
%1 = alloca %class.MyClass*, align 8
%2 = alloca i32, align 4
store %class.MyClass* %this, %class.MyClass** %1, align 8
store i32 %x, i32* %2, align 4
%3 = load %class.MyClass** %1
%4 = load i32* %2, align 4
%5 = add nsw i32 %4, 2
ret i32 %5
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2424 次 |
| 最近记录: |