-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Removal of MDString-based type references in LLVM 4 #39
Projects
Comments
The fix should include the following test case for the bitcode parser:
When you run nix-shell --pure -p llvm_39 --run "llvm-as cfi-eof-prologue.new.ll -o new.bc"
nix-shell --pure -p llvm_38 --run "llvm-as cfi-eof-prologue.old.ll -o old.bc" and then run |
This isn't really related to the AST or pretty-printer, it's an issue for the parser. |
langston-barrett
added a commit
to langston-barrett/llvm-pretty
that referenced
this issue
Dec 7, 2018
Tested and working on a _very_ large C++ program. Fixes GaloisInc#43, text copied from that issue: -------------------------------------------------------- Okay, this particular node has an especially twisted history. 0. [Feb 12, 2015](llvm-mirror/llvm@8921bbc): `MDTemplateTypeParameter` lands. It's fields have type i. `Num` ii. `Maybe PValMd` iii. `MDString` iv. `Maybe PValMd` v. `Maybe PValMd` 1. [Feb 18, 2015](llvm-mirror/llvm@eac950e ): The last field, "scope", was dropped, and the type of the second field was made into a `MDString`. 2. [Apr 23, 2016](llvm-mirror/llvm@de74840): Removal of MDString-based references (see GaloisInc#39). Third field is made into a `DITypeRef`. Interestingly, at no point in this process does the field only have three fields, [as it does in the AST](https://github.com/elliottt/llvm-pretty/blob/de881be8e97bc085150d816d359599d75ad3ac9b/src/Text/LLVM/AST.hs#L1100). The biggest flaw I'm seeing is that the first field of the record _is not a reference_, but it is looked up as if it is one. This is causing the parser to crash, because the reference is not defined.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
It seems LLVM 4 added a quite different way to refer to types in metadata. I'm not sure whether changes to the AST are necessary to accommodate this change, or if this is a parsing-only issue.
DICompositeType
: https://releases.llvm.org/4.0.1/docs/LangRef.html#dicompositetypeDISubprogram
: https://releases.llvm.org/4.0.1/docs/LangRef.html#disubprogramThe text was updated successfully, but these errors were encountered: