电影旅行敲代码

C++ 编译 操作系统

llvm中的数据结构及内存分配策略 - DenseMap

DenseMap 数据结构子篇 DenseMap是在llvm中用的非常广泛的数据结构,它本身的实现是一个基于Quadratic probing(二次探查)的散列表,键值对本身是std::pair<...

2018-05-27 15:32:58

阅读数 600

评论数 0

clang static analyzer中的数据结构及内存分配策略 - ImmutableMap & ImmutableSet篇

clang static analyzer中使用到的数据结构 注:这篇博客的初衷来源于[Analyzer] Attempting to speed up static analysis clang static analyzer中使用到的数据结构大致有以下几种,ImmutableMap,Imm...

2018-04-21 18:50:14

阅读数 313

评论数 1

clang static analyzer源码分析(番外篇):removeDead() - SVal、Symbol及Environment

引子在《clang static analyzer源码分析(番外篇):RegionStore以及evalCall()中的conservativeEvalCall》中,我们介绍了RegionStore以及cluster analysis,里面我们提到除了invalidate regions会使用到c...

2016-11-22 22:33:45

阅读数 1394

评论数 0

clang中的活跃性分析(续)

clang中活跃性分析续,这篇文章介绍了LiveVariables和RelaxedLiveVariables的区别,并给出了相关示例

2016-11-10 17:43:00

阅读数 1032

评论数 0

clang static analyzer源码分析(番外篇):RegionStore以及evalCall()中的conservativeEvalCall

介绍clang static analyzer对于RegionStore的实现,以及对函数inline时的conservativeEvalCall机制进行分析

2016-10-27 11:38:43

阅读数 1839

评论数 0

clang static analyzer源码分析(番外篇):evalCall()中的inline机制

引子我们在clang static analyzer源码分析(一)中介绍到,path-sensitive analysis的两种形式,一种是inline形式的分析,一种是非inline形式的分析。在静态分析的过程中,函数是否inline,属于过程间分析(interprocedural analys...

2016-10-16 22:35:56

阅读数 2076

评论数 0

clang static analyzer源码分析(五)

引子上一篇文章我们介绍了CFG,path-sensitive analysis就是在CFG上进行的,今天这篇文章主要介绍clang static analyzer的内存模型,相关的有 MemRegion以及MemRegion等相关的类。—————————更新————————– 关于clang s...

2016-09-08 17:22:41

阅读数 2357

评论数 0

clang static analyzer源码分析(四)

引子在上一篇文章中,非常粗略的过了一遍clang static analyzer相关源码的头文件,这篇文章简要介绍下clang static analyzer中的与CFG相关的类。clang static analyzer中的CFG是AST层级的,也就是CFG的CFGElement还是AST树中的...

2016-09-07 15:06:32

阅读数 2404

评论数 0

clang static analyzer源码分析(三)

引子在clang static analyzer源码分析(二)中我们简要介绍了ExplodedGraph以及如何调试clang static analyzer。今天这篇文章重点分析一下clang static analyzer对于path-sentitive analysis的代码架构。path-...

2016-09-05 22:07:17

阅读数 2357

评论数 0

clang static analyzer源码分析(二)

clang static analyzer源码分析(二),主要介绍ExplodedGraph的概念以及对clang static analyzer进行调试

2016-09-05 10:12:54

阅读数 3318

评论数 7

clang static analyzer源码分析(一)

引子clang静态代码分析是clang相对于gcc一个比较能够引起关注的点,特别是clang静态代码分析基于checker的架构和大部分的静态分析工具都不相同。clang静态代码分析使用符号执行的技术执行路径敏感的代码分析,符号执行引擎并不实际进行报错,而是使用挂载在引擎上的checker对程序状...

2016-03-01 18:10:50

阅读数 8477

评论数 16

clang中的活跃性分析

引子clang和LLVM都实现了活跃性分析,只是两者的目的不同,一个用于后续静态代码分析,一个用于后续的代码生成以及代码优化。clang活跃性分析实现主要在LiveVariables.h和LiveVariables.cpp这两个文件中,和常见的活跃性分析不同,clang的活跃性分析主要用于clan...

2016-02-25 13:26:58

阅读数 1771

评论数 0

LLVM全时优化

引子由于实验室项目原因,从本科开始接触Clang和LLVM开始到现在已经有2年时间了,期间都是针对Clang做一些边边角角的工作,没有潜下心来好好研读一下LLVM的paper。最近闲下来读了Chris Lattner那篇引用率高达2227的论文《LLVM: A Compilation Framew...

2015-12-23 11:14:00

阅读数 3995

评论数 0

编译器或者链接器会优化掉虚表吗

引子前一段时间和实验室的同学讨论虚表和RTTI相关的问题,由于我是编译器论调的拥泵,所以我信誓旦旦的说如果编译器发现虚表或者虚函数无用的话,会自动优化掉这些虚表信息。但是查过资料才发现,其实编译器并不会这么做!ODR原则在C++中有一个很重要的概念就是ODR原则,总的来说,ODR分为3个方面: 一...

2015-12-13 15:41:55

阅读数 1094

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭