[SAoC] MLIR Support for LDC

Roberto Rosmaninho Robertogrosmaninho at gmail.com
Fri Oct 18 21:30:16 UTC 2019

On Thursday, 17 October 2019 at 22:05:30 UTC, Johan wrote:
> Hey Roberto,
>   It's fun to read your updates, thanks :)

Hey Johan, I'm glad to hear that, thank you!!

> I hope to get the LLVM 10 fixes into LDC master soon. Then you 
> can rebase on top of that to make the specific MLIR changes 
> more obvious and easier to view.

Nic told me about your PR and I'm already trying to rebase my 
code on it!

> (I didn't check if you already did this) I find it very helpful 
> to look at test cases to see what functionality you are adding. 
> The lit-based testsuite is very convenient for checking IR 
> output. Did you already add MLIR tests there?

Not yet, I'll use this test suite on this next phase, maybe I can 
put some tests that I'm already writing there. :)

> Don't stress out too much about not following LLVM trunk 
> exactly. But also don't lag too long behind, such that the 
> changes you need to make are not too big and that you keep up 
> to date on impactful MLIR changes. So perhaps only pull MLIR 
> trunk once in 2 weeks or so.

Great idea, I'll follow it, thanks!

> You can try to offload some of the general LLVM trunk compile 
> issues to others, by making us aware of LLVM trunk compile 
> issues. I can try to help with that.


> LLVM trunk compilation fixes (not related to MLIR) you can 
> submit as PRs to LDC. That way your branch is solely about MLIR 
> changes, and not cluttered by the general LLVM changes needed.

I'm currently trying to use Linux to update the project and find 
the projects directory to improve my FindMLIR.cmake but I'm 
having the following problem over and over and I coudn't figure 
out what I'm doing wrong:

$ git clone http://github.com/ldc-developers/ldc
$ cd ldc
$ git checkout llvm10cmake
$ mkdir build && cd build
$ export DMD=~/dlang/dmd-2.087.1/linux/bin64/dmd
$ cmake -G Ninja ..  -DCMAKE_BUILD_TYPE=Release
# Cmake works ok and LLVM10 was found, I can put the log of CMake 
here later if I request.
$ ninja
$ ninja install
#It gives me the following error:

CMake Error at cmake_install.cmake:44 (file):
   file INSTALL cannot copy file 
"/home/roberto/dlang/ldc/build/bin/ldc2" to

FAILED: CMakeFiles/install.util
cd /home/roberto/dlang/ldc/build && /usr/bin/cmake -P 
ninja: build stopped: subcommand failed.

#When I try to compile a simple program: int main(){int a = 10; 
return 0;}
$ ~/ldc/build/bin/ldc2 sum.d

Error: cannot find source code for runtime library file 'object.d'
        ldc2 might not be correctly installed.
        Please check your ldc2.conf configuration file.
        Installation instructions can be found at 
Specify path to file 'object.d' with -I switch

> I was hoping you had solved these issues. I'm still confused by 
> "reach projects directory", is it not possible to `ninja 
> install` MLIR ?

Well, the instructions on MLIR git just ask for a "cmake --build 
. --target check-mlir" when you're compiling LLVM with MLIR.

The problem is that doesn't exist any flags such as 
$LLVM_SOURCE_DIR or $LLVM_PROJECTS_DIR. So unless I pass the path 
of $MLIR_ROOT_DIR BY command line I'm don't know any way to reach 
the source code of llvm to get MLIR files. Unfortunately, the 
project's dir inside llvm build doesn't provide all the files 
that I need.

Just to illustrate my problem with LLVM_ROOT_DIR I added the 
following line on my cmake:
       message("LLVM ROOT DIR IS: ${LLVM_ROOT_DIR}")
Then when I run the CMake I get the following result:
       LLVM ROOT DIR IS: /home/roberto/llvm-project/build

Hope I can solve this soon!

Best regards,

More information about the Digitalmars-d mailing list