MS fork

Dear MS,

Will you be cleaning up and encouraging people to get the work on
github upstream?


They presented on LLILC at EuroLLVM, and indicated they were just starting up but were definitely planning to contribute everything back to upstream. Personally, I’m pretty happy to see them talking actively to the community, participating effectively in EuroLLVM and some of the stuff they talked about there was really exciting.

Chandler has it right. Our intent is to upstream everything. The MS fork will be used as a staging area for LLVM changes as we work to get them upstreamed. Tactically we’re merging the MS fork everyday with mainline to try and stay close.

We’re still ramping up right now, and trying to figure out how best to work day to day, but our over arching goal is to enable (mainline) LLVM to be a great code generator for C#.


Just curious, are you planning to add support for debug info emission in mspdb format?

The LLILC project does not require direct interaction with the PDB, so it’s not part of our plans.

The JIT uses a special reporting format to communicate debug info (frame info and machine->IL mappings) back to the CoreCLR EE. The debugger joins this with the frontend-produced debug information (IL->source and logical frame offset->local, which is in a PDB) to complete the picture.

Something similar will likely happen in the AOT case, where the “code generator” just produces a subset of the data, and some other entity (the linker, say) incorporates that into the PDB.

But even if you use link.exe for linking, you’d still need to emit debug info into object files first, at least in the AOT case. Unless, of course, you are not planning to use LLVM backend on Windows at all.

Perhaps I interpreted your original question too narrowly and read “mspdb format” as “structure of the PDB”. The format for the backend-produced debug data is CodeView, not PDB. We don’t think of the PDB as a debug format. It is a container – a database of program information (hence the name Program DataBase).

For the AOT our intention is to emit native debug format, so CodeView on Windows and Dwarf on Linux, etc. Thus on Windows we will likely extend LLVM to emit the relevant bits of CodeView into COFF object files.

The LLILC project won’t have much to say about the PDB.

More details forthcoming as we work through our plans.