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