llvm

2024/9/19 18:40:06

llvm后端之函数栈帧

llvm后端之函数栈帧 引言1 目标扩展实现1.1 emitPrologue和emitEpilogue1.2 storeRegToStackSlot和loadRegFromStackSlot 2 寄存器存栈与恢复 引言 llvm后端在物理寄存器分配后、指令发射前会调用PEI这个pass来生成函数栈帧的创建与销毁。 1 目标扩展实现 在target下&#x…

LLVM理论篇之编译器结构

1、概述 编译器完成源程序到目标程序的翻译工作,这是一个复杂的整体过程。从概念上讲,一个编译程序的整体过程可以分为3个阶段,每个阶段将程序的一种语言表示形式转换成另一种语言表示形式,并且各个阶段在逻辑上是紧密相连的。典…

【LLVM】(一)LLVM简介、安装和第一个Hello Pass

本文结构,PS:根据需要选择观看哦 1. 前言参考 2.简介传统编译器架构LLVM架构 3. LLVM安装版本准备官网源码下载git下载安装过程 4. 写一个LLVM Pass旧Hello Pass实现(legacy PM version)新Hello Pass实现(Using the New Pass Mana…

LLVM的ThinLTO编译优化技术在Postgresql中的应用

相关:《Postgresql源码(128)深入分析JIT中的函数内联llvm_inline》 部分内容引用:https://blog.llvm.org/2016/06/thinlto-scalable-and-incremental-lto.html LTO是什么? 链接时优化(Link-time optimizat…

llvm后端之td定义指令信息

llvm后端之td定义指令信息 引言1 定义指令2 定义Operand3 定义SDNode4 PatFrags4.1 ImmLeaf4.2 PatLeaf 5 ComplexPattern6 谓词条件7 理解dag 引言 llvm后端通过td定义指令信息,并通过dag匹配将IR节点转换为平台相关的指令。 1 定义指令 td通过class Instructio…

银河麒麟V10操作系统编译LLVM18踩坑记录

1、简述 要在银河麒麟V10操作系统上编译一个LLVM18,这个系统之前确实也没有用过,所以开始了一系列的摸排工作,进行一下记录。 首先肯定是要搞一个系统,所以去到银河麒麟的网站,填写了一个申请 产品试用申请国产操作系…

llvm后端之局部变量

llvm后端之局部变量 引言1 生成FrameIndexSDNode2 消除FrameIndex2.1 eliminateCallFramePseudoInstr2.2 eliminateFrameIndex 引言 llvm后端对局部变量(即alloc节点)的访问,首先,将对alloc节点转为FrameIndex,所有对alloc的load和store均用…

LLVM理论篇之编译器结构

1、概述 编译器完成源程序到目标程序的翻译工作,这是一个复杂的整体过程。从概念上讲,一个编译程序的整体过程可以分为3个阶段,每个阶段将程序的一种语言表示形式转换成另一种语言表示形式,并且各个阶段在逻辑上是紧密相连的。典…

VS2022使用指定的LLVM版本

LLVM下载地址:Releases llvm/llvm-project GitHub LLVM/Clang toolsets for Visual Studio 2022, 2019, 2017, 2015, 2013, 2012 and 2010. GitHub - zufuliu/llvm-utils: LLVM/Clang toolsets for Visual Studio 2022, 2019, 2017, 2015, 2013, 2012 and 2010.…

llvm后端之td定义指令信息

llvm后端之td定义指令信息 引言1 定义指令2 定义Operand3 定义SDNode4 PatFrags4.1 ImmLeaf4.2 PatLeaf 5 ComplexPattern6 谓词条件7 理解dag 引言 llvm后端通过td定义指令信息,并通过dag匹配将IR节点转换为平台相关的指令。 1 定义指令 td通过class Instructio…

安装LLVM后无法使用FileCheck工具

如题,笔者在使用LLVM提供的FileCheck工具时,报错无法找到命令。 经查找,原因是笔者安装过多个版本的LLVM,因此LLVM在安装时为工具添加了对应的版本号,因此filecheck命令要切换为FileCheck-19。

LLVM - 编译器后端-目标描述

一:概述 LLVM具有非常灵活的架构。我们可以向其添加新的目标后端。后端的核心是目标描述。在本篇文章中,我们将学习如何在LLVM中添加一个CPU后端。 在本章中,我们将涵盖以下内容: • 为新的后端搭建环境,学习M88k CPU架构,并介绍从哪里可以找到所需的信息。 …

llvm后端之函数栈帧

llvm后端之函数栈帧 引言1 目标扩展实现1.1 emitPrologue和emitEpilogue1.2 storeRegToStackSlot和loadRegFromStackSlot 2 寄存器存栈与恢复 引言 llvm后端在物理寄存器分配后、指令发射前会调用PEI这个pass来生成函数栈帧的创建与销毁。 1 目标扩展实现 在target下&#x…

LLVM理论篇之编译器结构

1、概述 编译器完成源程序到目标程序的翻译工作,这是一个复杂的整体过程。从概念上讲,一个编译程序的整体过程可以分为3个阶段,每个阶段将程序的一种语言表示形式转换成另一种语言表示形式,并且各个阶段在逻辑上是紧密相连的。典…

llvm后端之局部变量

llvm后端之局部变量 引言1 生成FrameIndexSDNode2 消除FrameIndex2.1 eliminateCallFramePseudoInstr2.2 eliminateFrameIndex 引言 llvm后端对局部变量(即alloc节点)的访问,首先,将对alloc节点转为FrameIndex,所有对alloc的load和store均用…

提升C++开发效率的利器:深入解析Clang Power Tools

目录 一、引言 二、Clang Power Tools 简介 什么是 Clang Power Tools? 背景与发展历史 与 Clang 编译器的关系 主要开发团队和社区支持 系统要求 安装步骤 基本配置和使用 三、主要功能 代码格式化(Clang-Format) 代码质量提升 …