Hi Chenxi ,
这个问题并不是 clang 16 这个版本的 bug ,而是编译器的行为改变(变得更严格了),如果 llvm 社区不 revert 这个改变,那么应该是 16 以后所有的版本都是这个行为模式。所以并不是现在没有引入 16 ,以后计划引入 17 就没有这个问题了。如果 Compiler SIG 还要考虑全量系统使用 clang 编译这个工作,这个事情需要纳入到考虑中。
刘恺 Email: kai.liu@xfusion.com | Mobile: 181 2600 8111
From: Chenxi Mao ;
Sent: Friday, April 28, 2023 10:20 AM
To: Zhaochuanfeng (Steve) ;; kai.liu ;; tc@openeuler.org
Cc: Weiwei (weiwei, Compiler) ;
Subject: 回复 : 【 RFC 】【 Compiler SIG 】 openEuler LLVM 版本选型及规划讨论
Hi Kai :
根据目前的计划, compiler-sig 目前选定的多版本编译器(或者系统编译器), llvm-16 都没有纳入范围,根据川峰的计划,下一个版本可能会是 llvm-17 或更高版本,因此,目前 llvm-16 相关的 SRPM 包还没有合入到社区。
Chenxi
发件人 : Zhaochuanfeng (Steve) zhaochuanfeng@huawei.com >;
发送时间 : 2023 年 4 月 28 日 10:16
收件人 : kai.liu kai.liu@xfusion.com >;; tc@openeuler.org tc@openeuler.org >;
抄送 : Weiwei (weiwei, Compiler) weiwei64@huawei.com >;; Chenxi Mao chenxi.mao@suse.com >;
主题 : 答复 : 【 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/dd9f2d3082b8b6f8dfbccb0639e6e... https://bugs.gentoo.org/870412 https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-i...
理论上如果不修复所有受影响的包,那么在 clang >;=16 的环境中都会受该问题影响。我记得你之前提到过在推进使用 clang 编译内核和整个系统,不知道这个问题是否已经考虑到并且有规划解决?
刘恺 Email: kai.liu@xfusion.com | Mobile: 181 2600 8111
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- ; 相关的源码仓,支持方案与 llvm-latest 雷同。
基于以上原则,后续 openEuler 版本上 LLVM 编译器的版本选型将是:
欢迎大家给出宝贵意见,谢谢!
Best Regards 赵川峰( Steve )