https://llvm.org/bugs/show_bug.cgi?id=23712

            Bug ID: 23712
           Summary: Split of debug info in SROA triggers assertion in
                    verifier
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: DebugInfo
          Assignee: [email protected]
          Reporter: [email protected]
                CC: [email protected]
    Classification: Unclassified

Created attachment 14407
  --> https://llvm.org/bugs/attachment.cgi?id=14407&action=edit
File which triggers the assertion

If the attached opover2.ll is run through opt with: opt -O1 opover2.ll >x then
the following messages from the verifier occur:

piece is larger than or outside of variable
  call void @llvm.dbg.value(metadata i8* %val_arg.fca.0.extract, i64 0,
metadata
 !11, metadata !19), !dbg !18
!11 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "val", arg: 0, scope:
!6,
 file: !4, line: 1, type: !12)
!19 = !DIExpression(DW_OP_bit_piece, 0, 64)
piece is larger than or outside of variable
  call void @llvm.dbg.value(metadata i1 (i8*)* %val_arg.fca.1.extract, i64 0,
me
tadata !11, metadata !20), !dbg !18
!11 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "val", arg: 0, scope:
!6,
 file: !4, line: 1, type: !12)
!20 = !DIExpression(DW_OP_bit_piece, 64, 64)
LLVM ERROR: Broken module found, compilation aborted!

Compiling the .ll file without optimization does not trigger these assertions.
The offending instructions are generated in SROA.cpp, line 4207.

The original source of the .ll file is in D. The lazy variable val is compiled
to a closure.

void bar(lazy bool val)
{
    val();
}

void foo()
{
    bar(false);
}

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to