[llvm-dev] Errors linking with LLVM 5.0 - dump() missing
Mehdi AMINI via llvm-dev
llvm-dev at lists.llvm.org
Tue Sep 26 22:30:04 PDT 2017
2017-09-26 11:54 GMT-07:00 Matthias Braun via llvm-dev <
llvm-dev at lists.llvm.org>:
>
> > On Sep 26, 2017, at 7:04 AM, David Keaton via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
> >
> > On 09/25/2017 06:47 PM, David Keaton via llvm-dev wrote:
> >> On 09/25/2017 06:19 PM, Matthias Braun wrote:
> >>>
> >>>> On Sep 25, 2017, at 6:03 PM, David Keaton via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
> >>>>
> >>>> On 09/25/2017 02:53 PM, Matthias Braun via llvm-dev wrote:
> >>> In the meantime `cmake -DCMAKE_CXX_FLAGS="-DLLVM_ENABLE_DUMP"` should
> do the trick.
> >> Thank you. That was the flag we needed.
> >> Unfortunately, when I tried this just now, I found that the
> declaration of llvm::MachineRegisterInfo::dumpUses() in
> include/llvm/CodeGen/MachineRegisterInfo.h is missing the check against
> LLVM_ENABLE_DUMP. It has only
> >> #ifndef NDEBUG
> >> which causes the build to fail because the definition in lib/CodeGen/MachineRegisterInfo.cpp
> is guarded by this.
> >> #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
> >
> > Unfortunately, this was only the beginning. I tried updating the
> header file to test LLVM_ENABLE_DUMP as well, and when I did that, the
> build hit another such case, which I tried fixing, and then it hit another,
> and another. Here is what I have found so far that would need to be fixed
> under the current arrangement.
> >
> > LLVM_ENABLE_DUMP added to:
> >
> > include/llvm/CodeGen/MachineRegisterInfo.h
> > dumpUses()
> >
> > include/llvm/CodeGen/MachineScheduler.h
> > dumpScheduledState()
> >
> > include/llvm/CodeGen/TargetSchedule.h
> > getResourceName()
> >
> > include/llvm/MC/MCSchedule.h
> > Name
> >
> > utils/TableGen/SubtargetEmitter.cpp
> > emitted code inside EmitSchedModel()
> >
> > Unknown location in AArch64
> > This is not the end. I just lost track of what to change at this
> point.
> I guess that was to be expected with an option that didn't even have a
> cmake flag. I would propose to just check for LLVM_ENABLE_DUMP in the
> sourcecode and move the logic that debug builds have dump() methods to the
> cmake side of things to simplify things. But I think that needs agreement
> and someone to write a patch.
>
> +CC some of the people who I believe made the decision for the current
> style.
>
The usual proper way to expose such options (IIRC) is to define such config
options in the llvm-config.h (or config.h I forgot which one) during the
CMake configuration, and clients are supposed to use the definition from
these header that comes with the pre-built LLVM to conditionally compile
out their calls to these.
>
> >
> > Perhaps it would be easier to revert the change that hid the dump()
> methods. That would have another advantage as well. Before LLVM 5.0.0,
> Chapel had the ability to link with an existing pre-built LLVM if it was
> installed on the system. With LLVM 5.0.0, we cannot do that any longer
> because we need to compile with LLVM_ENABLE_DUMP defined. It takes 10x
> longer to compile LLVM than it does to compile the rest of Chapel, so it is
> quite a burden to require a recompilation of LLVM to get the dump() methods.
Again: I consider client code calling dump() to be a misuse.
>
I tend to agree, but there is a principled / robust way to have a client
support debug features alongside with a debug build of LLVM (the config.h
option I mentioned above).
--
Mehdi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170926/3ec03a92/attachment.html>
More information about the llvm-dev
mailing list