[LLVMdev] Debug information causing assertion
Eric Christopher
echristo at apple.com
Mon Aug 20 13:42:04 PDT 2012
On Aug 17, 2012, at 12:57 PM, "Villmow, Micah" <Micah.Villmow at amd.com> wrote:
> We have a test case where we are hitting an assertion in the X86 code generator. The assertion is: "Assertion failed: TheCU && "Unable to find compile unit!", file .\..\..\..\lib\CodeGen\AsmPrinter\DwarfDebug.cpp, line 1411"
>
> The bitcode is attached.
>
> What I am trying to figure out is what is malformed about our debug that is causing this error? This is reproducible with 'llc -march=x86 bugpoint-reduced-simplified.bc'.
>
> As far as I can tell, the variable 'TheCU' should map to the metadata node !24.
>
> Is this a bug?
Somewhere yes. I debugged it for a couple of minutes and you're getting the same scope node with two different addresses:
Addr: 0x102a07cf0
!{i32 786478, i32 0, metadata <badref>, metadata !"__OpenCL_CopyBuffer_kernel", metadata !"__OpenCL_CopyBuffer_kernel", metadata !"__OpenCL_CopyBuffer_kernel", metadata <badref>, i32 5, metadata <badref>, i1 false, i1 true, i32 0, i32 0, null, i32 0, i1 false, null, null, null, metadata <badref>, i32 0} ; [ DW_TAG_subprogram ] [line 5] [def] [scope 0] [__OpenCL_CopyBuffer_kernel]
Addr: 0x102a09f20
!{i32 786478, i32 0, metadata <badref>, metadata !"access_foo", metadata !"access_foo", metadata !"access_foo", metadata <badref>, i32 2, metadata <badref>, i1 false, i1 true, i32 0, i32 0, null, i32 0, i1 false, null, null, null, metadata <badref>, i32 0} ; [ DW_TAG_subprogram ] [line 2] [def] [scope 0] [access_foo]
The Lookup:
!{i32 786478, i32 0, metadata <badref>, metadata !"access_foo", metadata !"access_foo", metadata !"access_foo", metadata <badref>, i32 2, metadata <badref>, i1 false, i1 true, i32 0, i32 0, null, i32 0, i1 false, null, null, null, metadata <badref>, i32 0} ; [ DW_TAG_subprogram ] [line 2] [def] [scope 0] [access_foo]
(lldb) expr FnScope->getScopeNode()
(const llvm::MDNode *) $38 = 0x0000000102a0b430
I couldn't spot anything gratuitously wrong off the top of my head. I know that merging debug info from two modules has some problems but nothing in particular at this point is jumping out.
-eric
More information about the llvm-dev
mailing list