本系列的博客的内容是LLVM异常实现的整个过程,从C++生成LLVM IR开始,到运行时实际调用的库函数,会从抛出异常的过程开始结合llvm相关的代码进行讲解。这一期主要内容是讲解异常相关的结构、底层实现方式等基础信息,之后从...
前面libunwind的过程中多次和personality进行交互,这部分是由语言提供和语言相关的内容。libunwind的两个阶段对应到这一个函数之中,personality部分根据libunwind扫描到的平台相关的信息,在ehframe中扫描到当前栈帧对应...
上期提到的__cxa_xxx相关函数的实现离不开libunwind的相关接口,libunwind专门用于平台无关的堆栈展开和错误处理,内部做了很多平台相关的兼容工作,这期我们主要来介绍一下libunwind相关接口的具体实现。...
在之前的博客提到带有异常相关的C++代码编译成llvm ir后,会插入libcxxabi的__cxa_xxx函数,这期则是来了解这些函数的实现。
这一期我们通过编译C++到LLVM代码来查看这部分的实现。在此之前我们需要了解一些简单的基础知识,之后我们将从一个最小抛出异常的代码开始,逐渐复杂化这个例子,查看生成不同的LLVM IR来理解整个过程。...
当你心血来潮想学习Rust这门语言时,一定会用到Rustup来安装Rust。同时你可以会疑问toolchain是啥,target又是啥,为啥学其它编程语言没有这些概念,下面我们就一一解答你的疑问。...
腾讯云开发者社区是腾讯云官方开发者社区,致力于打造开发者的技术分享型社区。提供专栏,问答,沙龙等产品和服务,汇聚海量精品云计算使用和开发经验,致力于帮助开发者快速成长与发展,营造开放的云计算技术生态圈。...
下面函数foo中存在冗余变量计算、赋值语句,使用instcombine优化的效果:
opt提供了很多pass,例如检测代码中的死循环、对代码中的memcpy优化、遍历全部函数分析调用关系等等。