Questions tagged «llvm»

LLVM项目是模块化和可重用的编译器及工具链技术的集合。llvm标记主要用于编写C ++代码(或通过C绑定的另一种语言)以与LLVM库进行接口,而不是任何(越来越多的)具有LLVM的工具。有关LLVM生成的机器代码的问题,请参见`llvm-codegen`标签。

4
什么会使C ++ RTTI不受欢迎?
在查看LLVM文档时,他们提到他们使用“ RTTI的自定义形式”,这就是他们拥有isa<>,cast<>和dyn_cast<>模板功能。 通常,读到库重新实现某种语言的某些基本功能后,这会产生可怕的代码味道,并且会被邀请运行。但是,这就是我们所说的LLVM:这些家伙正在研究C ++编译器和C ++运行时。如果他们不知道自己在做什么,那我就很困惑,因为我更喜欢Mac OS附带clang的gcc版本。 尽管如此,由于经验不足,我仍然想知道普通RTTI的陷阱是什么。我知道它仅适用于具有v表的类型,但这仅引发两个问题: 由于您只需要一个虚拟方法来拥有一个vtable,为什么他们不只是将一个方法标记为virtual?虚拟析构函数似乎擅长于此。 如果他们的解决方案不使用常规的RTTI,是否知道如何实现?
67 c++  llvm  rtti 

3
LLVM为什么要分配冗余变量?
这是一个带有枚举定义和main函数的简单C文件: enum days {MON, TUE, WED, THU}; int main() { enum days d; d = WED; return 0; } 它会转换为以下LLVM IR: define dso_local i32 @main() #0 { %1 = alloca i32, align 4 %2 = alloca i32, align 4 store i32 0, i32* %1, align 4 store i32 2, i32* …
9 c  llvm  llvm-codegen 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.