16 snsn1984

尚未进行身份认证

我要认证

专注技术,专注管理。

等级
TA的排名 2k+

LLVM libc++的RISCV支持

libc++的官方主页:http://libcxx.llvm.org/libc++文档主页:https://libcxx.llvm.org/docs/简介:libc++ is an implementation of the C++ standard library, targeting C++11, C++14 and above.All of the code in libc++ isdual licensedunder the MIT license and the UIUC...

2020-05-21 10:54:46

深入研究Clang(十九) Clang的RISCV支持2

前文Clang的RISCV支持1介绍了Clang中有关RISCV的代码主要集中在三个地方:Driver部分、Basic部分和CodeGen部分,并且对Basic部分和CodeGen部分的内容和关系进行了介绍,只有Driver部分因为涉及到了ToolChain、Tool和Command(job)等概念体系而未进行深入介绍。在介绍完ToolChain、Tool和Command(job)等概念和调用关系之后,我们在本文再对Clang的RISCV支持的Driver部分进行深入分析。一、Driver部分涉及到

2020-05-21 10:48:03

深入研究Clang(十八) Clang Driver库的job

Clang的Tool最终会调用ConstructJob来为Compilation添加job。根据源码中的注释,Tool中保存的是一个特定编译工具的信息(Tool - Information on a specific compilation tool.,clang/include/clang/Driver/Tool.h)。而job则是通过Command类去进行具体实现,同时还有一个相关类JobList。本文将分析Command和JobList的实现,以及其相关的调用关系。一、Command和JobLis

2020-05-21 10:46:32

深入研究Clang(十七) Clang Driver库的Tool

Tool也是Clang的Driver库里的一个类,它是具体编译工具的信息,代码注释中的原文是:Tool - Information on a specific compilation tool.(clang/include/clang/Driver/Tool.h)本文将对Tool的实现以及其相关调用关系做一个简单的分析。一、Tool的实现和继承关系1、Tool的定义和实现都位于clang/include/clang/Driver/Tool.h和clang/lib/Driver/Tool.cpp之中。

2020-05-21 10:44:28

深入研究Clang(十六) Clang Driver库的ToolChain

ToolChain是Clang的Driver库里的一个类,它是用来获取具体某个平台的工具集合,代码注释中的原文是:ToolChain - Access to tools for a single platform.(clang/include/clang/Driver/ToolChain.h)这里涉及到的Tool也是Clang的Driver库里的一个类,它是具体编译工具的信息,代码注释中的原文是:Tool - Information on a specific compilation tool.(clang

2020-05-21 10:42:40

深入研究Clang(十五) Clang的RISCV支持1

一、Clang/LLVM对RISCV的支持概况目前已经有一系列的C类编译器和库开始支持RISCV,这其中包括了GCC和Clang/LLVM。从RISCV的官方网站,可以获取目前的支持状态。具体内容如下:网址:https://riscv.org/software-status/#c-compilers-and-libraries该列表中还包含了所支持的License和Maintainers。其中,Clang/LLVM的Maintainers是Alex Bradbury,这位大神是LLVMWEE

2020-05-21 10:39:01

LLVM每日谈之五十七 TableGen

TableGen官方文档TableGen 后端官方文档TableGen是LLVM的一个工具,其可执行文件的名字为llvm-tblgen。通常在build目录下的bin目录里。TableGen主要是帮助开发者开发和维护特定领域的信息记录,方便开发者更好的构建这些信息记录,避免错误。尤其是在面对大量的信息记录的时候,用起来比较方便。TableGen的主要使用者是The LLVM Targe...

2020-05-03 23:48:20

方舟编译器学习笔记67 clang-tidy的检查规则解析

前段时间,我为方舟编译器提交了一些clang-tidy的检查规则,这些规则位于项目目录之下的.clang-tidy文件之中。本文将逐条解读一下这些规则。1、readability-identifier-naming (规则2.1.1)这条规则是用来检查名命名规则的。在这条总的规则之下,还有关于具体要检查项的key和value。比如: - key: reada...

2020-03-14 11:29:53

关于编译器和静态分析的一些课程

陆陆续续收集了一些课程,主要是编译器和静态分析方面的,在这里分享给大家,也给自己做个资料存档。国外的一些课程:1、Stanford编译器课程系列CS143:CS143: CompilersCS243:CS243 - Advanced CompilersCS343:CS 343这个系列课程,共有三门课。其中,CS143讲的是编译器的基础知识;CS142讲的是程序分析和优化技术...

2020-03-08 20:29:59

写在36岁的生日

25 Feb 2020今天是我36岁的生日。 回望过去,似乎是不知不觉就来到了这个有点尴尬的年纪,这个被年轻程序员认为要被淘汰的年纪。 但是真正到了这个年纪,却发现,现在更能静下心来做点东西,也更喜欢踏实的做点东西。32岁的时候,做到了技术总监,真正脱离了第一线,终于不担心自己的中年危机了。 每天就是开会、考察、写公文、谈合作,搞的自己疲惫不堪。 偶尔有时间的时候,自己读读代码,读读书,就...

2020-03-04 11:11:50

深入研究Clang(十四) clang-tidy的使用

前文对clang-tidy进行了简单的介绍,本文对clang-tidy使用中的一些点进行一下总结。1、clang-tidy及其批量运行脚本run-clang-tidy.py在Clang/LLVM的预编译发布包中都有,但是位于不同的目录。其中,clang-tidy位于:发布包主目录/bin目录之下;run-clang-tidy.py位于:发布包主目录/shared/clang/目录之下。例如...

2020-02-08 11:49:15

深入研究Clang(十三) clang-tidy简介

最近几天在关注clang-tidy,有一些体会,简单做一些笔记。分享给感兴趣的朋友们,也是给将来的自己看。1、clang-tidy是基于AST的静态检查工具。因为它基于AST,所以要比基于正则表达式的静态检查工具更为精准,但是带来的缺点就是要比基于正则表达式的静态检查工具慢一点。也是因为它基于AST,所以clang-tidy运行的时候需要知道编译命令。2、clang-tidy不仅仅可以做静...

2020-01-11 12:03:21

方舟编译器学习笔记分类与导读

方舟学习笔记系列,从方舟开源到现在,已经写了50多篇,保证了每天一篇的更新频率。篇数增加之后,文章的分类以及文章之间的关系,逐渐变得复杂起来。本文将对已发表的学习笔记系列进行分类和导读,方便读者更好的理解。1、方舟动态本类中主要是关于方舟编译器动态的消息,包括不限于方舟的变动、线下活动见闻等,以与此相关的评论和思考内容。方舟编译器学习笔记5 方舟开始接受代码合并请求 [方舟动态]方舟...

2019-10-24 08:52:12

LLVM每日谈之五十六 从RegionPass看Region

RegionPass是Pass的一个子类,和其他Pass的子类(ModulePass、FunctionPass、LoopPass、BasicBlockPass)一样,都是同样的一个模式:运行在每一个XX之上。(注:这里的XX代表着这几个Pass的针对的对象,每个都不同。FunctionPass运行在每一个Function之上,RegionPass运行在每一个Region之上。其他同样)但是...

2019-06-15 23:49:18

[技术论坛]6月22日HelloLLVM上海线下聚会

HelloLLVM和HelloGCC社区将在 2019年6月22日(周六)在上海聚会。聚会内容包含(但不限于):MLIR 是什么,要学么? 近期的编译领域的八卦 TVM Stack 前景如何?现在入还来得及么? 如何吸引新人参与GCC开发? 闪电演讲(现场排队)时间暂定为6月22日周六下午3点到6点,地点暂定为张江高科地铁站旁的 vπ 咖啡。本次活动采取报名制,感兴趣的同学和...

2019-06-15 21:59:24

LLVM每日谈之五十五 浅谈对Pass的错误认知及其原因

Pass作为LLVM的一个重要的组成部分,在LLVM IR层面和LLVM Backend层面都发挥了重要的作用。很多LLVM的使用者容易将Pass理解为LLVM IR层面的analysis和transform,而忽略了Pass在LLVM Backend层面的作用。而实际上,Pass在LLVM Backend层面发挥的作用一点都不小。以后端的结构为例:Notes: 《Getting Star...

2019-06-15 21:58:35

LLVM每日谈之五十四 新建后端的第二步校正(register set)

新建后端的七大步骤,在前文《LLVM后端文档解析》中进行过介绍。我们在《创建一个LLVM新后端的第一步中文档与代码的差异》和《Target Registration的更正》中,已经列出了现有文档中第一步“Create a subclass of the TargetMachine class that describes characteristics of your target machine...

2019-06-15 21:57:33

LLVM每日谈之五十三 Target Registration的更正

前文:创建一个LLVM新后端的第一步中文档与代码的差异主要是为新后端实现了一个Target Machine,这是新建后端七个步骤的第一步。在这个步骤之后,还有一个隐含的内容,那就是将这个Target注册,好让其它的LLVM工具可以在运行时使用你新建的target。LLVM的官方文档中,以Sparc为例,做了举例:和实际上,代码变动已经很大了。目前的Target的注册的代...

2019-06-15 21:56:16

LLVM每日谈之五十二 创建LLVM后端的第一步校正(target machine)

根据LLVM文档《Writing an LLVM Backend》可知道,LLVM新建一个后端需要七大步骤。前文对七大步骤和文档中其他的结构的关系也做了简单的分析。后续会逐步分析新建后端的七大步骤,并以RISC-V为目标平台,结合RISC-V的LLVM后端代码进行分析。另外,由于《Writing an LLVM Backend》中有一部分内容已经和代码完全脱钩,所以我通常会列出文档的要求,然后...

2019-06-15 21:55:08

Modern source-to-source transformation with Clang and libTooling

原文地址:https://eli.thegreenplace.net/2014/05/01/modern-source-to-source-transformation-with-clang-and-libtooling/I couple of years ago I published a blog post namedBasic source-to-source transformati...

2019-05-19 18:06:04

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。