求教移植ollvm到最新的llvm版本

你在OldPM的初始化函数里面打个Log看看

好的感谢张总

llvm 13之前默认都用的legacy pass manager,最新版本pass都是要基于new pass manager,不过可以加上参数 -flegacy-pass-manager来启用legacy pass manger

1 个赞

不用。CMake我记得有个选项是全局默认OldPM

1 个赞

找到了 cmake -DLLVM_USE_NEWPM=OFF

还是赶紧把光移植到newpm​:grinning_face_with_smiling_eyes:

冷知识,给OldPM的Pass套个壳就可以了

带佬,我也移植到 llvm-13上了。 但是 用 clang编译 test.c的时候,出现头文件未找到问题。fatal error: ‘stdio.h’ file not found.

…/llvm_build_13/bin/clang test.c
clang-13: error: no input files

#include <stdio.h>
 
/* 函数声明 */
int max(int num1, int num2);
 
int main ()
{
   /* 局部变量定义 */
   int a = 100;
   int b = 200;
   int ret;
 
   /* 调用函数来获取最大值 */
   ret = max(a, b);
 
   printf( "Max value is : %d\n", ret );
 
   return 0;
}
 
/* 函数返回两个数中较大的那个数 */
int max(int num1, int num2)
{
   /* 局部变量声明 */
   int result;
 
   if (num1 > num2)
  result = num1;
   else
  result = num2;
 
   return result;
}

一般都是打包成Toolchain用

1 个赞

参数指定sdk就行
-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
你使用 -### 对比一下原始clang的编译命令,缺什么补什么

1 个赞

可以用 xcrun 指定 SDK(前提是已安装 Command Line Tools

$ xcrun --show-sdk-version
10.15

$ xcrun -sdk macosx10.15 …/llvm_build_13/bin/clang test.c
1 个赞

:pray:,张总:ox::beer:

可行。非常感谢:pray:

可行。非常感谢:pray: +1

这种方式我们实际业务中发现会因为前端参数传递的区别导致跨版本Xcode出各种匪夷所思的报错, 我们一般都是拉到Swift那边用Swift打Toolchain.

不过不用Xcode的话应该这样也可以

1 个赞

可以临时解决命令行编译的问题 :crazy_face:

1 个赞

在Xcode设置里面添加 -flegacy-pass-manager编译之后的Mach-O文件确实已经混淆了,但是文件体积变大接近3倍,相比之前版本的ollvm混淆也没有这么大!

完全不会啊,张总

那我就要好好跟你说说流水线调度的问题了

张总可以出个系列课程之类的啊 :joy: :grinning: