<div dir="ltr"><div><div>Hello,<br><br>It is likely that I missing something however I have to ask.<br><br>We are working on Mull project <a href="https://github.com/mull-project">https://github.com/mull-project</a> which deals with<br>LLVM IR in the first place so it is often that we encounter errors like<br>the following one when we do things like parseAssemblyString(IR, Err, GlobalCtx);`:<br><br>```<br>test: <string>:7237:187: error: invalid field 'variable'<br>!1526 = distinct !DIGlobalVariable(name: "test_info_", linkageName: "_ZN14Hello_sup_Test10test_info_E", scope: !0, file: !1527, line: 4, type: !1528, isLocal: false, isDefinition: true, variable: %"class.testing::TestInfo"** @_ZN14Hello_sup_Test10test_info_E, declaration: !2817)<br>```<br><br>Quick research of recent LLVM commits reveals that stuff is being changed<br>significantly, example:<br><br>commit 7b500b4bdf40cb40cb33bdcf5faf900db4930824<br>Author: Adrian Prantl <<a href="mailto:aprantl@apple.com">aprantl@apple.com</a>><br>Date:   Tue Dec 20 02:09:43 2016 +0000<br><br>    [IR] Remove the DIExpression field from DIGlobalVariable.<br><br>    ...<br><br>The questions are:<br><br>1) why do Asm / LL parsers not produce warnings like:<br><br>"LLVM IR you are using has version 3.9 which is incompatible with current<br>supported version 4.0."<br><br>2) I didn't find any special version markers in LLVM IR. My guess is that<br>having them there would allow a developer who is changing LLVM IR format to<br>put deprecation / backward incompatibility checks so that higher-level<br>developers, like we are, see the friendly messages/warnings (see 1). It would<br></div>help us a lot to see that the reason is incompatibility, not any other reasons<br></div>like mistakes that we sometimes make.<br><div><div><br>Is there a reason why this kind of versioning is not being done in<br>AsmParser/LLParser?<br><br>Is it hard to have such functionality in place?<br><br>Background: we develop `Mull` as in-source project inside LLVM. We often<br>use stable LLVM distribution from `brew` and Rust stable/nightly compilers that are <br>often one version behind the latest stable version of LLVM. Currently our solution<br>is to stick to stable version of LLVM source tree however having a more friendly<br>output from AsmParser/LLParser would help us a lot to understand and debug<br>things faster and easier.<br><br>Thanks.<br><br>Stan<br><br></div></div></div>