[llvm-dev] What does it mean by a "DICompileUnit missing from llvm.dgs.cu" ? | Where is the error ?

Tobias Grosser via llvm-dev llvm-dev at lists.llvm.org
Sun Mar 12 00:40:50 PST 2017


On Sat, Mar 11, 2017, at 07:34 PM, David Blaikie via llvm-dev wrote:
> On Sat, Mar 11, 2017 at 3:10 AM SANJAY SRIVALLABH SINGAPURAM via llvm-dev
> <
> llvm-dev at lists.llvm.org> wrote:
> 
> > Hello,
> >
> > One of my Julia programs failed to execute with the following error,
> > DICompileUnit not listed in llvm.dbg.cu
> > !11 = distinct !DICompileUnit(language: DW_LANG_C89, file: !3, producer:
> > "julia", isOptimized: true, runtimeVersion: 0,emissionKind: FullDebug,
> > enums: !12)
> >
> > This was generated by verifyModule(*GPUModule,&(llvm::errs())From whithin
> > PPCGCodeGeneration.cpp in Polly.
> >
> > From <llvm_src>/test/Verifier/dbg-orphaned-compileunit.ll, I understand
> > that the debug info, of a compile unit, represented by !11 is missing from
> > llvm.dbg.cu.
> >
> > What does this mean ? What could have caused this problem and how can I
> > fix it ?
> >
> 
> At the LLVM level, it means that the CU debug info (DICompileUnit) wasn't
> listed in the list of all compile units (!llvm.dbg.cu global named
> metadata
> node) when it should be. Whatever produced the IR you are using likely
> has
> a bug and should be fixed to ensure the DICompileUnits created are
> included
> in the !llvm.dbg.cu global named metadata node (check Clang's behavior
> for
> comparison - usually a good reference point)
> 
> This invariant was added a while ago (in LLVM time - I think it was in
> the
> last year or maybe two) by Adrian.

Right. It seems as if Julia is emitting invalid debug symbols. If you
want to point them to this issue, you can probably call 
"verifyModule(*GPUModule))" after their initial IR is generated and
already see the issue. If this is not the case, Polly might make a
mistake when extracting the GPU module and might miss to transfer all
debug information. Can you send me the output of the flag
"-polly-dump-before"?
Can you pass the dumped IR through 'opt' without seeing an error? In
this case, the
IR that enters Polly is still correct, but Polly might mis-transform it.


An alternative fix would be to extract the debug-info stripping
functionality in lib/Transforms/IPO/StripSymbols.cpp into its own
function and call this on our Kernel-IR. It is unlikely that we want to
debug GPU kernels, so we can just remove debug information for now.

Best,
Tobias

> 
> - Dave
> 
> 
> >
> > Thank You,
> > Sanjay
> > _______________________________________________
> > LLVM Developers mailing list
> > llvm-dev at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
> >
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


More information about the llvm-dev mailing list