Re: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
Hi Chenxi,
这个问题并不是clang 16这个版本的bug,而是编译器的行为改变(变得更严格了),如果llvm社区不revert这个改变,那么应该是16以后所有的版本都是这个行为模式。所以并不是现在没有引入16,以后计划引入17就没有这个问题了。如果Compiler
 SIG还要考虑全量系统使用clang编译这个工作,这个事情需要纳入到考虑中。
From: Chenxi Mao <chenxi.mao@suse.com>
Sent: Friday, April 28, 2023 10:20 AM
To: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.com>; kai.liu <kai.liu@xfusion.com>; tc@openeuler.org
Cc: Weiwei (weiwei, Compiler) <weiwei64@huawei.com>
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/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 (1)
- 
                
kai.liu