[llvm-dev] Migration help required for 3.3 to 3.8
Tim Northover via llvm-dev
llvm-dev at lists.llvm.org
Sun Jun 5 08:37:17 PDT 2016
On 5 June 2016 at 08:22, edA-qa mort-ora-y via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> `CreateStructGEP` requires a type parameter now. I'm not sure what type it's expecting, so I converted `CreateStructGEP( valuePtr, index )` to `CreateStructGEP( valuePtr->getType(), valuePtr, index )`... would that be correct?
This is part of an in-progress move to untyped pointers. if you're
executing a gep on "type*", the type that'll be needed is "type".
Which is probably "valuePtr->getType()->getElementType()" in your
> `arg_iterator` no longer converst to Value*, I have a lot of this now:
> This seems like I'm doing something wrong. Is there a more correct way to convert to the `Value*`?
This looks right. Duncan removed the implicit conversions as part of a refactor.
> `PassManager` is now a tample type with `IRUnitT`. What is the `IRUnitT` type? Or rather, how should I be creating the `PassManager`?
The pass manager you're used to has been renamed "LegacyPassManager"
as we're working on a new implementation (templated, as you see). For
the initial migration it's best to just use LegacyPassManager.
> Why does `EngineBuilder` require a `unique_ptr` for the `Module` now? After I create the builder I still need to reference the module, in particular to run the pass manager and look up functions to run. Same for `linker::linkInModule`.
Because EngineBuilder takes ownership of the module and deletes it
afterwards. It's still fine to keep your own pointer to the Module.
> `createBasicAliasAnalyisPass` is gone. What is the replacement, or do I not need it anymore (I believe it was required to be run for other passes).
> `linkInModule` used to provide an error message output. Is there a way to get the error now that it is gone?
I'm afraid I'm not familiar with these.
More information about the llvm-dev