• vifird
    2019-12-11
    请教一个问题宫老师,LLVM的Module,设计是什么粒度的?比如一堆脚本可能拆分了几百个文件,把这些文件编译成IR,是每个文件对应一个Module?还是整体只构建一个Module?

    作者回复: 如果对应于C或C++语言,一个Module就相当于一个目标文件,里面有一些函数式对外公开的,另一些是私有的,然后多个Module可以链接到一起。
    所以,基本上是一个文件对应一个Module。

     1
     1
  • 沉淀的梦想
    2019-10-23
    老师用的什么版本的llvm,我使用llvm 7.0编译老师lab-26的代码,发现LegacyRTDyldObjectLinkingLayer和AcknowledgeORCv1Deprecation都已经不存在了,但是网上搜了一下,也没找到什么可以替代的东西

    作者回复: 用llvm 9.0吧。
    并且最好下载源代码,自己编译。这样会按照debug模式编译,用opt等工具的时候,可以输出更多信息,有利于你做实验。

     1
     1
  • ZYS
    2020-01-28
    宫老师考虑把课程整理成一本书出版那,很好的内容
    
    
  • overmind
    2019-12-21
    如何通过优化算法,把上述代码从使用内存的版本,优化成使用寄存器的版本。谢谢

    作者回复: 第29讲有介绍分配寄存器的算法。尽量多使用寄存器,实在寄存器放不下的,才“溢出”到内存。

    
    
  • 夜行观星
    2019-11-17
    老师,我把生成二进制为文件链接成可执行文件出现了错误,运行JIT可以正常执行。
    错误日志打印在下面,老师有空看下
    ➜ cmake-build-debug git:(master) ✗ clang -v bin/output.o -o a.out
    clang version 9.0.0 (tags/RELEASE_900/final)
    Target: x86_64-apple-darwin18.6.0
    Thread model: posix
    InstalledDir: /usr/local/opt/llvm/bin
     "/usr/bin/ld" -demangle -lto_library /usr/local/Cellar/llvm/9.0.0/lib/libLTO.dylib -dynamic -arch x86_64 -macosx_version_min 10.14.0 -o a.out bin/output.o -lSystem /usr/local/Cellar/llvm/9.0.0/lib/clang/9.0.0/lib/darwin/libclang_rt.osx.a
    Undefined symbols for architecture x86_64:
      "_main", referenced from:
         implicit entry/start for main executable
         (maybe you meant: ___main)
    ld: symbol(s) not found for architecture x86_64
    clang-9: error: linker command failed with exit code 1 (use -v to see invocation)
    展开
    
    
  • xiaobang
    2019-11-12
    请教一下老师,为什么if语句要生成merge块,明明then和else里已经return了?难道llvm只允许一个函数一个return
    
    
我们在线,来聊聊吧