【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论

各位TC委员好:
我是赵川峰,这个邮件我讨论一下社区LLVM的版本选型及规划,也期望涉及LLVM编译器的相关委员提提诉求。
下图是LLVM上游社区的版本发布历史和计划,版本节奏是2个大版本/年,大版本发布后每2周发布一个小版本(计划内发布5个小版本,按需继续发布)。
可以看出上游社区版本发布比较频繁,这与openEuler LTS版本对软件包的稳定性有些冲突,所以就有了支持LLVM多版本的诉求。
Compiler SIG计划支持两个版本:LTS版本(系统默认)和latest版本,rpm源码仓库创建如下:
LTS版本:
src-openeuler/clang: 包含clang,clang-tools-extra
src-openeuler/llvm: 包含llvm,compiler-rt、libcxx、libcxxabi、llvm-libunwind、mlir、libc
src-openeuler/lld:
包含lld
src-openeuler/llvm-bolt:
包含bolt
latest版本:
src-openeuler/clang-latest
src-openeuler/llvm-latest
src-openeuler/lld-latest
src-openeuler/llvm-bolt-latest
原则&方案:
(1)
LTS版本跟随openEuler LTS版本升级,在openEuler LTS前一个创新版本Ready,后续SPX上版本保持不变。
(2)
latest版本跟随所有openEuler版本(LTS和创新版本)升级,取上游社区当时最新版本。
(3)
如果有其他版本需要支持(需要有充分理由),可以创建llvm-<major>相关的源码仓,支持方案与llvm-latest雷同。
基于以上原则,后续openEuler版本上LLVM编译器的版本选型将是:
欢迎大家给出宝贵意见,谢谢!
Best Regards
赵川峰(Steve)

Hi 川峰,
我对这个版本选型方案和模型本身没有意见,但是想提醒一下关于clang 16的问题。
由于clang 16默认打开了以下开关,
* -Werror=implicit-function-declaration
* -Werror=implicit-int
* -Werror=strict-prototypes
造成clang 16在很多软件包的configure阶段会检测出错,或者有的检测虽然通过但是判断编译器的支持特性出错导致编译出来的二进制有功能问题。具体可以参考Gentoo的bug和clang上游的讨论,可以看到受影响的包非常多:
https://archives.gentoo.org/gentoo-dev/message/dd9f2d3082b8b6f8dfbccb0639e6e240
https://bugs.gentoo.org/870412
理论上如果不修复所有受影响的包,那么在clang >=16的环境中都会受该问题影响。我记得你之前提到过在推进使用clang编译内核和整个系统,不知道这个问题是否已经考虑到并且有规划解决?
From: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.com>
Sent: Thursday, April 27, 2023 8:33 PM
To: tc@openeuler.org
Cc: Weiwei (weiwei, Compiler) <weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.com>
Subject: [Tc] 【RFC】【Compiler
SIG】openEuler LLVM版本选型及规划讨论
各位TC委员好:
我是赵川峰,这个邮件我讨论一下社区LLVM的版本选型及规划,也期望涉及LLVM编译器的相关委员提提诉求。
下图是LLVM上游社区的版本发布历史和计划,版本节奏是2个大版本/年,大版本发布后每2周发布一个小版本(计划内发布5个小版本,按需继续发布)。
可以看出上游社区版本发布比较频繁,这与openEuler LTS版本对软件包的稳定性有些冲突,所以就有了支持LLVM多版本的诉求。
Compiler SIG计划支持两个版本:LTS版本(系统默认)和latest版本,rpm源码仓库创建如下:
LTS版本:
src-openeuler/clang: 包含clang,clang-tools-extra
src-openeuler/llvm: 包含llvm,compiler-rt、libcxx、libcxxabi、llvm-libunwind、mlir、libc
src-openeuler/lld: 包含lld
src-openeuler/llvm-bolt: 包含bolt
latest版本:
src-openeuler/clang-latest
src-openeuler/llvm-latest
src-openeuler/lld-latest
src-openeuler/llvm-bolt-latest
原则&方案:
(1)
LTS版本跟随openEuler LTS版本升级,在openEuler LTS前一个创新版本Ready,后续SPX上版本保持不变。
(2)
latest版本跟随所有openEuler版本(LTS和创新版本)升级,取上游社区当时最新版本。
(3)
如果有其他版本需要支持(需要有充分理由),可以创建llvm-<major>相关的源码仓,支持方案与llvm-latest雷同。
基于以上原则,后续openEuler版本上LLVM编译器的版本选型将是:
欢迎大家给出宝贵意见,谢谢!
Best Regards
赵川峰(Steve)

Hi
刘恺,
多谢回复!由于目前平行宇宙计划使用的系统LLVM编译器版本是15.0.7,所以还没有遇到你说的问题,我们持续关注一下clang 16上面这个问题。
另外一个已知兼容性问题(晨曦之前提起过)是LLVM15上使用dwarf 5格式,与系统GCC 10上的dwarf 4有兼容问题。
目前的解决方案是先默认设置LLVM 15为dwarf 4,等系统GCC升级到12后再启用dwarf 5。
Best Regards
赵川峰(Steve)
发件人: kai.liu <kai.liu@xfusion.com>
发送时间: 2023年4月27日
23:47
收件人: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.com>; tc@openeuler.org
抄送: Weiwei (weiwei, Compiler) <weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.com>
主题: [Tc] Re: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
Hi 川峰,
我对这个版本选型方案和模型本身没有意见,但是想提醒一下关于clang 16的问题。
由于clang 16默认打开了以下开关,
* -Werror=implicit-function-declaration
* -Werror=implicit-int
* -Werror=strict-prototypes
造成clang 16在很多软件包的configure阶段会检测出错,或者有的检测虽然通过但是判断编译器的支持特性出错导致编译出来的二进制有功能问题。具体可以参考Gentoo的bug和clang上游的讨论,可以看到受影响的包非常多:
https://archives.gentoo.org/gentoo-dev/message/dd9f2d3082b8b6f8dfbccb0639e6e240
https://bugs.gentoo.org/870412
理论上如果不修复所有受影响的包,那么在clang >=16的环境中都会受该问题影响。我记得你之前提到过在推进使用clang编译内核和整个系统,不知道这个问题是否已经考虑到并且有规划解决?
From: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.com>
Sent: Thursday, April 27, 2023 8:33 PM
To: tc@openeuler.org
Cc: Weiwei (weiwei, Compiler) <weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.com>
Subject: [Tc] 【RFC】【Compiler SIG】openEuler
LLVM版本选型及规划讨论
各位TC委员好:
我是赵川峰,这个邮件我讨论一下社区LLVM的版本选型及规划,也期望涉及LLVM编译器的相关委员提提诉求。
下图是LLVM上游社区的版本发布历史和计划,版本节奏是2个大版本/年,大版本发布后每2周发布一个小版本(计划内发布5个小版本,按需继续发布)。
可以看出上游社区版本发布比较频繁,这与openEuler LTS版本对软件包的稳定性有些冲突,所以就有了支持LLVM多版本的诉求。
Compiler SIG计划支持两个版本:LTS版本(系统默认)和latest版本,rpm源码仓库创建如下:
LTS版本:
src-openeuler/clang: 包含clang,clang-tools-extra
src-openeuler/llvm: 包含llvm,compiler-rt、libcxx、libcxxabi、llvm-libunwind、mlir、libc
src-openeuler/lld: 包含lld
src-openeuler/llvm-bolt: 包含bolt
latest版本:
src-openeuler/clang-latest
src-openeuler/llvm-latest
src-openeuler/lld-latest
src-openeuler/llvm-bolt-latest
原则&方案:
(1)
LTS版本跟随openEuler LTS版本升级,在openEuler LTS前一个创新版本Ready,后续SPX上版本保持不变。
(2)
latest版本跟随所有openEuler版本(LTS和创新版本)升级,取上游社区当时最新版本。
(3)
如果有其他版本需要支持(需要有充分理由),可以创建llvm-<major>相关的源码仓,支持方案与llvm-latest雷同。
基于以上原则,后续openEuler版本上LLVM编译器的版本选型将是:
欢迎大家给出宝贵意见,谢谢!
Best Regards
赵川峰(Steve)

-------- 原始邮件 --------
发件人: "Zhaochuanfeng (Steve)" <zhaochuanfeng@huawei.com>
日期: 2023年4月28日周五 上午10:17
收件人: "kai.liu" <kai.liu@xfusion.com>, tc@openeuler.org
抄送: "Weiwei (weiwei, Compiler)" <weiwei64@huawei.com>, Chenxi Mao <chenxi.mao@suse.com>
主 题: [Tc] 答复: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
Hi 刘恺,
多谢回复!由于目前平行宇宙计划使用的系统LLVM编译器版本是15.0.7,所以还没有遇到你说的问题,我们持续关注一下clang 16上面这个问题。
另外一个已知兼容性问题(晨曦之前提起过)是LLVM15上使用dwarf 5格式,与系统GCC 10上的dwarf 4有兼容问题。
目前的解决方案是先默认设置LLVM 15为dwarf 4,等系统GCC升级到12后再启用dwarf 5。
Best Regards
赵川峰(Steve)
发件人: kai.liu <kai.liu@xfusion.com>
发送时间: 2023年4月27日 23:47
收件人: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.com>; tc@openeuler.org
抄送: Weiwei (weiwei, Compiler) <weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.com>
主题: [Tc] Re: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
Hi 川峰,
我对这个版本选型方案和模型本身没有意见,但是想提醒一下关于clang 16的问题。
由于clang 16默认打开了以下开关,
* -Werror=implicit-function-declaration
* -Werror=implicit-int
* -Werror=strict-prototypes
造成clang 16在很多软件包的configure阶段会检测出错,或者有的检测虽然通过但是判断编译器的支持特性出错导致编译出来的二进制有功能问题。具体可以参考Gentoo的bug和clang上游的讨论,可以看到受影响的包非常多:
https://archives.gentoo.org/gentoo-dev/message/dd9f2d3082b8b6f8dfbccb0639e6e240
https://bugs.gentoo.org/870412
理论上如果不修复所有受影响的包,那么在clang >=16的环境中都会受该问题影响。我记得你之前提到过在推进使用clang编译内核和整个系统,不知道这个问题是否已经考虑到并且有规划解决?
From: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.com>
Sent: Thursday, April 27, 2023 8:33 PM
To: tc@openeuler.org
Cc: Weiwei (weiwei, Compiler) <weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.com>
Subject: [Tc] 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
各位TC委员好:
我是赵川峰,这个邮件我讨论一下社区LLVM的版本选型及规划,也期望涉及LLVM编译器的相关委员提提诉求。
下图是LLVM上游社区的版本发布历史和计划,版本节奏是2个大版本/年,大版本发布后每2周发布一个小版本(计划内发布5个小版本,按需继续发布)。
可以看出上游社区版本发布比较频繁,这与openEuler LTS版本对软件包的稳定性有些冲突,所以就有了支持LLVM多版本的诉求。
Compiler SIG计划支持两个版本:LTS版本(系统默认)和latest版本,rpm源码仓库创建如下:
LTS版本:
src-openeuler/clang: 包含clang,clang-tools-extra
src-openeuler/llvm: 包含llvm,compiler-rt、libcxx、libcxxabi、llvm-libunwind、mlir、libc
src-openeuler/lld: 包含lld
src-openeuler/llvm-bolt: 包含bolt
latest版本:
src-openeuler/clang-latest
src-openeuler/llvm-latest
src-openeuler/lld-latest
src-openeuler/llvm-bolt-latest
原则&方案:
(1) LTS版本跟随openEuler LTS版本升级,在openEuler LTS前一个创新版本Ready,后续SPX上版本保持不变。
(2) latest版本跟随所有openEuler版本(LTS和创新版本)升级,取上游社区当时最新版本。
(3) 如果有其他版本需要支持(需要有充分理由),可以创建llvm-<major>相关的源码仓,支持方案与llvm-latest雷同。
基于以上原则,后续openEuler版本上LLVM编译器的版本选型将是:
欢迎大家给出宝贵意见,谢谢!
Best Regards
赵川峰(Steve)

嗯,这个有考虑过。如果下一个LTS版本是25.03,LLVM
的LTS版本可能在24.09上再升级一次。目前没有看到与GCC的其他大的兼容问题。
需要指出的是,下一个openEuler版本LLVM 12将被清退,依赖LLVM 12的(如mesa)需要同步升级到LLVM
15。
Best Regards
赵川峰(Steve)
发件人: myeuler@163.com <myeuler@163.com>
发送时间: 2023年4月28日
10:35
收件人: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.com>; kai.liu <kai.liu@xfusion.com>; tc@openeuler.org
抄送: Weiwei (weiwei, Compiler) <weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.com>
主题: 回复:[Tc]
答复: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
和下一代LTS的选型节奏匹配一下,考虑下一代LTS GCC LLVM的兼容性别出问题
发自我的手机
-------- 原始邮件 --------
发件人: "Zhaochuanfeng (Steve)" <zhaochuanfeng@huawei.com>
日期: 2023年4月28日周五 上午10:17
收件人: "kai.liu" <kai.liu@xfusion.com>,
tc@openeuler.org
抄送: "Weiwei (weiwei, Compiler)" <weiwei64@huawei.com>, Chenxi Mao <chenxi.mao@suse.com>
主 题: [Tc] 答复: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
Hi 刘恺,
多谢回复!由于目前平行宇宙计划使用的系统LLVM编译器版本是15.0.7,所以还没有遇到你说的问题,我们持续关注一下clang 16上面这个问题。
另外一个已知兼容性问题(晨曦之前提起过)是LLVM15上使用dwarf 5格式,与系统GCC 10上的dwarf 4有兼容问题。
目前的解决方案是先默认设置LLVM 15为dwarf 4,等系统GCC升级到12后再启用dwarf 5。
Best Regards
赵川峰(Steve)
发件人: kai.liu <kai.liu@xfusion.com>
发送时间: 2023年4月27日 23:47
收件人: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.com>; tc@openeuler.org
抄送: Weiwei (weiwei, Compiler) <weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.com>
主题: [Tc] Re: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
Hi 川峰,
我对这个版本选型方案和模型本身没有意见,但是想提醒一下关于clang 16的问题。
由于clang 16默认打开了以下开关,
* -Werror=implicit-function-declaration
* -Werror=implicit-int
* -Werror=strict-prototypes
造成clang 16在很多软件包的configure阶段会检测出错,或者有的检测虽然通过但是判断编译器的支持特性出错导致编译出来的二进制有功能问题。具体可以参考Gentoo的bug和clang上游的讨论,可以看到受影响的包非常多:
https://archives.gentoo.org/gentoo-dev/message/dd9f2d3082b8b6f8dfbccb0639e6e240
https://bugs.gentoo.org/870412
理论上如果不修复所有受影响的包,那么在clang >=16的环境中都会受该问题影响。我记得你之前提到过在推进使用clang编译内核和整个系统,不知道这个问题是否已经考虑到并且有规划解决?
From: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.com>
Sent: Thursday, April 27, 2023 8:33 PM
To: tc@openeuler.org
Cc: Weiwei (weiwei, Compiler) <weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.com>
Subject: [Tc] 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
各位TC委员好:
我是赵川峰,这个邮件我讨论一下社区LLVM的版本选型及规划,也期望涉及LLVM编译器的相关委员提提诉求。
下图是LLVM上游社区的版本发布历史和计划,版本节奏是2个大版本/年,大版本发布后每2周发布一个小版本(计划内发布5个小版本,按需继续发布)。
可以看出上游社区版本发布比较频繁,这与openEuler LTS版本对软件包的稳定性有些冲突,所以就有了支持LLVM多版本的诉求。
Compiler SIG计划支持两个版本:LTS版本(系统默认)和latest版本,rpm源码仓库创建如下:
LTS版本:
src-openeuler/clang: 包含clang,clang-tools-extra
src-openeuler/llvm: 包含llvm,compiler-rt、libcxx、libcxxabi、llvm-libunwind、mlir、libc
src-openeuler/lld: 包含lld
src-openeuler/llvm-bolt: 包含bolt
latest版本:
src-openeuler/clang-latest
src-openeuler/llvm-latest
src-openeuler/lld-latest
src-openeuler/llvm-bolt-latest
原则&方案:
(1) LTS版本跟随openEuler LTS版本升级,在openEuler LTS前一个创新版本Ready,后续SPX上版本保持不变。
(2) latest版本跟随所有openEuler版本(LTS和创新版本)升级,取上游社区当时最新版本。
(3) 如果有其他版本需要支持(需要有充分理由),可以创建llvm-<major>相关的源码仓,支持方案与llvm-latest雷同。
基于以上原则,后续openEuler版本上LLVM编译器的版本选型将是:
欢迎大家给出宝贵意见,谢谢!
Best Regards
赵川峰(Steve)

-------- 原始邮件 --------
发件人: "Zhaochuanfeng (Steve)" <zhaochuanfeng@huawei.com>
日期: 2023年4月28日周五 中午11:15
收件人: myeuler@163.com, "kai.liu" <kai.liu@xfusion.com>, tc@openeuler.org
抄送: "Weiwei (weiwei, Compiler)" <weiwei64@huawei.com>, Chenxi Mao <chenxi.mao@suse.com>
主 题: [Tc] 答复: 回复:答复: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
嗯,这个有考虑过。如果下一个LTS版本是25.03,LLVM 的LTS版本可能在24.09上再升级一次。目前没有看到与GCC的其他大的兼容问题。
需要指出的是,下一个openEuler版本LLVM 12将被清退,依赖LLVM 12的(如mesa)需要同步升级到LLVM 15。
Best Regards
赵川峰(Steve)
发件人: myeuler@163.com <myeuler@163.com>
发送时间: 2023年4月28日 10:35
收件人: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.com>; kai.liu <kai.liu@xfusion.com>; tc@openeuler.org
抄送: Weiwei (weiwei, Compiler) <weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.com>
主题: 回复:[Tc] 答复: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
和下一代LTS的选型节奏匹配一下,考虑下一代LTS GCC LLVM的兼容性别出问题
发自我的手机
-------- 原始邮件 --------
发件人: "Zhaochuanfeng (Steve)" <zhaochuanfeng@huawei.com>
日期: 2023年4月28日周五 上午10:17
收件人: "kai.liu" <kai.liu@xfusion.com>, tc@openeuler.org
抄送: "Weiwei (weiwei, Compiler)" <weiwei64@huawei.com>, Chenxi Mao <chenxi.mao@suse.com>
主 题: [Tc] 答复: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论Hi 刘恺,
多谢回复!由于目前平行宇宙计划使用的系统LLVM编译器版本是15.0.7,所以还没有遇到你说的问题,我们持续关注一下clang 16上面这个问题。
另外一个已知兼容性问题(晨曦之前提起过)是LLVM15上使用dwarf 5格式,与系统GCC 10上的dwarf 4有兼容问题。
目前的解决方案是先默认设置LLVM 15为dwarf 4,等系统GCC升级到12后再启用dwarf 5。
Best Regards
赵川峰(Steve)
发件人: kai.liu <kai.liu@xfusion.com>
发送时间: 2023年4月27日 23:47
收件人: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.com>; tc@openeuler.org
抄送: Weiwei (weiwei, Compiler) <weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.com>
主题: [Tc] Re: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
Hi 川峰,
我对这个版本选型方案和模型本身没有意见,但是想提醒一下关于clang 16的问题。
由于clang 16默认打开了以下开关,
* -Werror=implicit-function-declaration
* -Werror=implicit-int
* -Werror=strict-prototypes
造成clang 16在很多软件包的configure阶段会检测出错,或者有的检测虽然通过但是判断编译器的支持特性出错导致编译出来的二进制有功能问题。具体可以参考Gentoo的bug和clang上游的讨论,可以看到受影响的包非常多:
https://archives.gentoo.org/gentoo-dev/message/dd9f2d3082b8b6f8dfbccb0639e6e240
https://bugs.gentoo.org/870412
理论上如果不修复所有受影响的包,那么在clang >=16的环境中都会受该问题影响。我记得你之前提到过在推进使用clang编译内核和整个系统,不知道这个问题是否已经考虑到并且有规划解决?
From: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.com>
Sent: Thursday, April 27, 2023 8:33 PM
To: tc@openeuler.org
Cc: Weiwei (weiwei, Compiler) <weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.com>
Subject: [Tc] 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
各位TC委员好:
我是赵川峰,这个邮件我讨论一下社区LLVM的版本选型及规划,也期望涉及LLVM编译器的相关委员提提诉求。
下图是LLVM上游社区的版本发布历史和计划,版本节奏是2个大版本/年,大版本发布后每2周发布一个小版本(计划内发布5个小版本,按需继续发布)。
可以看出上游社区版本发布比较频繁,这与openEuler LTS版本对软件包的稳定性有些冲突,所以就有了支持LLVM多版本的诉求。
Compiler SIG计划支持两个版本:LTS版本(系统默认)和latest版本,rpm源码仓库创建如下:
LTS版本:
src-openeuler/clang: 包含clang,clang-tools-extra
src-openeuler/llvm: 包含llvm,compiler-rt、libcxx、libcxxabi、llvm-libunwind、mlir、libc
src-openeuler/lld: 包含lld
src-openeuler/llvm-bolt: 包含bolt
latest版本:
src-openeuler/clang-latest
src-openeuler/llvm-latest
src-openeuler/lld-latest
src-openeuler/llvm-bolt-latest
原则&方案:
(1) LTS版本跟随openEuler LTS版本升级,在openEuler LTS前一个创新版本Ready,后续SPX上版本保持不变。
(2) latest版本跟随所有openEuler版本(LTS和创新版本)升级,取上游社区当时最新版本。
(3) 如果有其他版本需要支持(需要有充分理由),可以创建llvm-<major>相关的源码仓,支持方案与llvm-latest雷同。
基于以上原则,后续openEuler版本上LLVM编译器的版本选型将是:
欢迎大家给出宝贵意见,谢谢!
Best Regards
赵川峰(Steve)

赵川峰 Zhao Chuanfeng
Mobile: +86-50000036156(For Welink,eSpace Calls)
Email: zhaochuanfeng@huawei.com
-------- 原始邮件 --------
发件人: "Zhaochuanfeng (Steve)" <zhaochuanfeng@huawei.com>
日期: 2023年4月28日周五 中午11:15
收件人: myeuler@163.com, "kai.liu" <kai.liu@xfusion.com>, tc@openeuler.org
抄送: "Weiwei (weiwei, Compiler)" <weiwei64@huawei.com>, Chenxi Mao <chenxi.mao@suse.com>
主 题: [Tc] 答复: 回复:答复: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
嗯,这个有考虑过。如果下一个LTS版本是25.03,LLVM 的LTS版本可能在24.09上再升级一次。目前没有看到与GCC的其他大的兼容问题。
需要指出的是,下一个openEuler版本LLVM 12将被清退,依赖LLVM 12的(如mesa)需要同步升级到LLVM 15。
Best Regards
赵川峰(Steve)
发件人: myeuler@163.com <myeuler@163.com>
发送时间: 2023年4月28日 10:35
收件人: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.com>; kai.liu <kai.liu@xfusion.com>; tc@openeuler.org
抄送: Weiwei (weiwei, Compiler) <weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.com>
主题: 回复:[Tc] 答复: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
和下一代LTS的选型节奏匹配一下,考虑下一代LTS GCC LLVM的兼容性别出问题
发自我的手机
-------- 原始邮件 --------
发件人: "Zhaochuanfeng (Steve)" <zhaochuanfeng@huawei.com>
日期: 2023年4月28日周五 上午10:17
收件人: "kai.liu" <kai.liu@xfusion.com>, tc@openeuler.org
抄送: "Weiwei (weiwei, Compiler)" <weiwei64@huawei.com>, Chenxi Mao <chenxi.mao@suse.com>
主 题: [Tc] 答复: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论Hi 刘恺,
多谢回复!由于目前平行宇宙计划使用的系统LLVM编译器版本是15.0.7,所以还没有遇到你说的问题,我们持续关注一下clang 16上面这个问题。
另外一个已知兼容性问题(晨曦之前提起过)是LLVM15上使用dwarf 5格式,与系统GCC 10上的dwarf 4有兼容问题。
目前的解决方案是先默认设置LLVM 15为dwarf 4,等系统GCC升级到12后再启用dwarf 5。
Best Regards
赵川峰(Steve)
发件人: kai.liu <kai.liu@xfusion.com>
发送时间: 2023年4月27日 23:47
收件人: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.com>; tc@openeuler.org
抄送: Weiwei (weiwei, Compiler) <weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.com>
主题: [Tc] Re: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
Hi 川峰,
我对这个版本选型方案和模型本身没有意见,但是想提醒一下关于clang 16的问题。
由于clang 16默认打开了以下开关,
* -Werror=implicit-function-declaration
* -Werror=implicit-int
* -Werror=strict-prototypes
造成clang 16在很多软件包的configure阶段会检测出错,或者有的检测虽然通过但是判断编译器的支持特性出错导致编译出来的二进制有功能问题。具体可以参考Gentoo的bug和clang上游的讨论,可以看到受影响的包非常多:
https://archives.gentoo.org/gentoo-dev/message/dd9f2d3082b8b6f8dfbccb0639e6e240
https://bugs.gentoo.org/870412
理论上如果不修复所有受影响的包,那么在clang >=16的环境中都会受该问题影响。我记得你之前提到过在推进使用clang编译内核和整个系统,不知道这个问题是否已经考虑到并且有规划解决?
From: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.com>
Sent: Thursday, April 27, 2023 8:33 PM
To: tc@openeuler.org
Cc: Weiwei (weiwei, Compiler) <weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.com>
Subject: [Tc] 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
各位TC委员好:
我是赵川峰,这个邮件我讨论一下社区LLVM的版本选型及规划,也期望涉及LLVM编译器的相关委员提提诉求。
下图是LLVM上游社区的版本发布历史和计划,版本节奏是2个大版本/年,大版本发布后每2周发布一个小版本(计划内发布5个小版本,按需继续发布)。
可以看出上游社区版本发布比较频繁,这与openEuler LTS版本对软件包的稳定性有些冲突,所以就有了支持LLVM多版本的诉求。
Compiler SIG计划支持两个版本:LTS版本(系统默认)和latest版本,rpm源码仓库创建如下:
LTS版本:
src-openeuler/clang: 包含clang,clang-tools-extra
src-openeuler/llvm: 包含llvm,compiler-rt、libcxx、libcxxabi、llvm-libunwind、mlir、libc
src-openeuler/lld: 包含lld
src-openeuler/llvm-bolt: 包含bolt
latest版本:
src-openeuler/clang-latest
src-openeuler/llvm-latest
src-openeuler/lld-latest
src-openeuler/llvm-bolt-latest
原则&方案:
(1) LTS版本跟随openEuler LTS版本升级,在openEuler LTS前一个创新版本Ready,后续SPX上版本保持不变。
(2) latest版本跟随所有openEuler版本(LTS和创新版本)升级,取上游社区当时最新版本。
(3) 如果有其他版本需要支持(需要有充分理由),可以创建llvm-<major>相关的源码仓,支持方案与llvm-latest雷同。
基于以上原则,后续openEuler版本上LLVM编译器的版本选型将是:
欢迎大家给出宝贵意见,谢谢!
Best Regards
赵川峰(Steve)
participants (3)
-
kai.liu
-
myeuler@163.com
-
Zhaochuanfeng (Steve)