GCC RISCV 后端 -- GCC Passes 注释
在前面文章提到,当GCC 前端完成对C源代码解析完成后,就会使用 处理过程(Passes)机制,通过一系列的处理过程,将 GENERIC IR 表示的C程序 转步转换成 目标机器的汇编语言。过程描述如下图所示:

此处所示的处理过程管理者(pass_manager)的构造函数。其调用的时机如下:
#0 gcc::pass_manager::pass_manager (this=0x7161cd0, ctxt=0x7161cb0) at <gcc-project>/gcc/passes.cc:1579
#1 0x0000000001bd7ecd in general_init (argv0=0x7fffffffd9c7 "cc1", init_signals=true, original_argv=...) at <gcc-project>/gcc/toplev.cc:1154
#2 0x0000000001bd9ed9 in toplev::main (this=0x7fffffffd3d2, argc=19, argv=0x7fffffffd518) at <gcc-project>/gcc/toplev.cc:2284
#3 0x0000000004482c61 in main (argc=19, argv=0x7fffffffd518) at <gcc-project>/gcc/main.cc:39
即在编译器cc1初始化的过程中,将处理过程及其管理者给初始化了。
处理过程的定义文件 是 <gcc-project>/gcc/passes.def,经过处理后,生成 pass-instances.def 文件,然后在 pass_manager 构造函数中 include 进去。如下:



这样就把所有在pass-instances.def定义的处理过程包含在 pass_manager 里面。
1. pass_manager 包含了 所有处理过程的指针。

2. pass_manager 通过 pass_lists 包含了 5个 pass_list,每个 pass_list 包含对应类型的处理过程。


3. pass_manger 的每一个 pass_list 包含其对应类型的 处理过程(pass)。如下:

被处理后,在 pass-instances.def 文件中对应如下,增加的同处理过程的序号。

all_lowering_passes pass_list 包含上图 NEXT_PASS 中的处理过程(Pass)。
另外 处理过程中有个 sub 栏位,作为 其子处理过程列表。
总结来说,经过初始化后,所有处理过程的实体会以单向列表的形式,分类地有层级地存放在 pass_manager 里面。
相关文章:
GCC RISCV 后端 -- GCC Passes 注释
在前面文章提到,当GCC 前端完成对C源代码解析完成后,就会使用 处理过程(Passes)机制,通过一系列的处理过程,将 GENERIC IR 表示的C程序 转步转换成 目标机器的汇编语言。过程描述如下图所示: 此…...
Ollama存在安全风险的情况通报及解决方案
据清华大学网络空间测绘联合研究中心分析,开源跨平台大模型工具Ollama默认配置存在未授权访问与模型窃取等安全隐患。鉴于目前DeepSeek等大模型的研究部署和应用非常广泛,多数用户使用Ollama私有化部署且未修改默认配置,存在数据泄露、算力盗…...
IDEA Generate POJOs.groovy 踩坑小计 | 生成实体 |groovy报错
一、无法生成注释或生成的注释是null 问题可能的原因: 1.没有从表里提取注释信息,修改def calcFields(table)方法即可 def calcFields(table) {DasUtil.getColumns(table).reduce([]) { fields, col ->def spec Case.LOWER.apply(col.getDataType().…...
阿里云云监控资源告警常用模板
阿里云云监控资源告警常用模板 {"HostAvailabilityTemplate": [],"Description": "","SystemEventTemplates": [],"AlertTemplatesJson": {"kvstore_standard": [{"displayName": "Connection usa…...
Tailwind CSS 问题:npm error could not determine executable to run
问题与处理策略 问题描述 npx tailwindcss init -p在使用 Tailwind CSS 的前端项目中,执行上述指令,即初始化 Tailwind CSS 时,报如下错误 npm error could not determine executable to run# 报错npm 错误无法确定要运行的可执行文件问题…...
vue基本功
watchEffect和watch watchEffect默认 immdiate 是 true,而且自动收集依赖 watch需要手动写依赖,immdiate 默认是 false toRef和toRefs toRef: 复制 reactive 里的单个属性并转成 ref toRefs: 复制 reactive 里的所有属性并转成 ref vue3中使用vuex import { useStore } f…...
.NET10 - 预览版1新功能体验(一)
.NET 10 首个预览版已经在前两天发布,该版本在 .NET Runtime、SDK、libraries、C#、ASP.NET Core、Blazor 和 .NET MAUI 等多个方面都有重大改进和增强。其中C# 14 预览版也伴随着.NET 10预览版一起发布了,今天就和大家一起体验一下.NET 10 和 C# 14 。 …...
java下载多个网络文件并压缩成压缩包保存到本地
背景 开发票的时候远程会返回发票的url,现在客户端需要下载发票;因为一个订单可能不止一张发票,因此需要通过网络把远程的文件下载回来并压缩成压缩文件进行返回。 实现 本文的例子直接基于java.net包下面的类实现。(因为是基于…...
23种设计模式之单例模式(Singleton Pattern)【设计模式】
文章目录 一、简介二、关键点三、实现单例模式的步骤四、C#示例4.1 简单的单例模式4.2 线程安全的单例模式(双重检查锁定)4.3 静态初始化单例模式 五、单例模式优缺点5.1 优点5.2 缺点 六、适用场景七、示例的现实应用 一、简介 单例模式(Si…...
[项目]基于FreeRTOS的STM32四轴飞行器: 四.LED控制
基于FreeRTOS的STM32四轴飞行器: 四.LED控制 一.配置Com层二.编写驱动 一.配置Com层 先在Com_Config.h中定义灯位置的枚举类型: 之后定义Led的结构体: 定义飞行器状态: 在Com_Config.c中初始化四个灯: 在Com_Config.h外部声明…...
使用 dynamic-datasource-spring-boot-starter 实现多数据源动态切换
目录 在实际开发中,我们经常会遇到需要在一个项目中连接多个数据源的场景。例如,一个应用可能需要同时访问多个数据库,或者根据业务需求动态切换数据源。dynamic-datasource-spring-boot-starter 是一个基于 Spring Boot 的轻量级多数据源动态…...
springboot中注解有什么用
注解(Annotation)是 Java 的一个重要特性,我用几个具体例子来解释: 1、标记功能 Service // 告诉Spring这是一个服务类 public class UserService { }Data // 告诉Lombok自动生成getter/setter public class User {private…...
Spring Boot 缓存最佳实践:从基础到生产的完整指南
Spring Boot 缓存最佳实践:从基础到生产的完整指南 引言 在现代分布式系统中,缓存是提升系统性能的银弹。Spring Boot 通过 spring-boot-starter-cache 模块提供了开箱即用的缓存抽象,但如何根据业务需求实现灵活、可靠的缓存方案…...
Linux网络相关内容与端口
网络相关命令 ping命令测试连接状态 wget命令:非交互式文件下载器,可以在命令行内下载网络文件 使用ctrlc可以中止下载 curl命令:可以发送http网络请求,用于文件下载、获取信息等 其实和浏览器打开网站一样,cu…...
Python Flask框架学习汇编
1、入门级: 《Python Flask Web 框架入门》 这篇博文条理清晰,由简入繁,案例丰富,分十五节详细讲解了Flask框架,强烈推荐! 《python的简单web框架flask【附例子】》 讲解的特别清楚,每一步都…...
GitHub CI流水线
GitHub CI流水线 build.yml 路径:.github/workflows/build.yml name: Docker Image CIon:workflow_dispatch:jobs:build:runs-on: ubuntu-lateststeps:- uses: actions/checkoutv4- name: Set up JDK 8uses: actions/setup-javav4with:java-version: 8distributi…...
机器视觉运动控制一体机在天地盖同步跟随贴合解决方案
市场应用背景 纸盒天地盖是一种包装形式,广泛应用于消费电子、食品礼盒、奢侈品及化妆品等领域。其采用高强度纸板,经过预组装处理,结构坚固稳定,能有效保护产品并提升品牌形象。随着包装行业快速发展,市场对天地盖的…...
贪心算法一
> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解什么是贪心算法,并且掌握贪心算法。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! >…...
什么是全栈?
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点下班 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 📃文章前言 🔷文章均为学习工…...
后端-Java虚拟机
Java虚拟机 Java虚拟机的组成 Java虚拟机的组成由类加载器ClassLoader、运行时数据区域(JVM管理的内存)和执行引擎(即时遍历器、解释器垃圾回收器) 类加载器加载class字节码文件中的内容到内存运行时数据区域负责管理jvm使用到…...
璀璨星河Starry Night效果展示:多风格并行生成(梵高/达芬奇/莫奈)
璀璨星河Starry Night效果展示:多风格并行生成(梵高/达芬奇/莫奈) 1. 沉浸式艺术创作体验 璀璨星河Starry Night不仅仅是一个AI绘画工具,更是一个数字艺术殿堂。基于Streamlit构建的交互界面彻底打破了传统AI工具的工业感&#…...
告别黑盒:手把手教你用GDB调试`ipmitool`源码,亲眼看到RAW数据如何发送
从GDB断点到硬件交互:动态追踪ipmitool RAW命令的全链路实现 在服务器管理领域,IPMI协议如同一位沉默的守护者,通过BMC(基板管理控制器)提供着硬件级的监控与控制能力。而ipmitool作为最流行的IPMI命令行工具ÿ…...
避坑指南:从Paraformer到SenseVoice,语音模型训练数据准备的5个常见错误
避坑指南:从Paraformer到SenseVoice,语音模型训练数据准备的5个常见错误 语音识别和多模态语音模型正在重塑人机交互的边界。当Paraformer凭借其简洁的音频-文本配对要求成为ASR领域的新宠时,SenseVoice却以情感识别、事件标记等多维度分析能…...
手把手调试Linux DRM:如何用ftrace和debugfs深入connector的生命周期
深入Linux DRM调试:用ftrace与debugfs剖析connector全生命周期 当一块崭新的显示板卡接入系统时,DRM驱动中的connector如同一位尽职的接线员,负责建立显示设备与内核之间的通信桥梁。但在实际开发中,我们常会遇到热插拔检测失灵、…...
Ext2Read:终极Windows读取Linux分区解决方案,3分钟快速上手
Ext2Read:终极Windows读取Linux分区解决方案,3分钟快速上手 【免费下载链接】ext2read A Windows Application to read and copy Ext2/Ext3/Ext4 (With LVM) Partitions from Windows. 项目地址: https://gitcode.com/gh_mirrors/ex/ext2read 你是…...
PCB布局设计规范与工程实践要点
PCB布局设计思路与工程实践指南1. 布局设计基本原则1.1 结构约束优先原则在PCB布局初期,必须优先考虑机械结构约束条件:定位安装孔、连接器等结构件需严格按照外壳设计文件放置连接器1脚方向必须与结构设计匹配,避免装配错误元件高度不得超过…...
FastAPI GraphQL 集成:如何在 FastAPI 中轻松使用 GraphQL
FastAPI GraphQL 集成:如何在 FastAPI 中轻松使用 GraphQL 【免费下载链接】fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production 项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi FastAPI 作为高性…...
如何开发Browser MCP自定义工具与资源扩展:完整指南
如何开发Browser MCP自定义工具与资源扩展:完整指南 【免费下载链接】mcp Browser MCP is a Model Context Provider (MCP) server that allows AI applications to control your browser 项目地址: https://gitcode.com/gh_mirrors/mcp16/mcp Browser MCP&a…...
Python 官方下载页面(如 python.org/downloads/)的片段,列出了 Windows 平台下 Python 3.13.11
Python 官方下载页面(如 python.org/downloads/)的片段,列出了 Windows 平台下 Python 3.13.11(发布于 2025 年 12 月 5 日)的多种安装包选项。以下是各选项的简要说明: Windows installer (64-bit / 32-b…...
DownKyi:B站视频高效解决方案——如何三步搞定8K资源本地化管理
DownKyi:B站视频高效解决方案——如何三步搞定8K资源本地化管理 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印…...
