<div dir="ltr">Can you check whether this was fixed by r257977 and r257979? I've already requested they be merged to the 3.8 branch.</div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jan 17, 2016 at 4:02 PM, Joerg Sonnenberger <span dir="ltr"><<a href="mailto:joerg@britannica.bec.de" target="_blank">joerg@britannica.bec.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Tue, Jan 12, 2016 at 10:46:09PM -0000, Keno Fischer via llvm-commits wrote:<br>
> Author: kfischer<br>
> Date: Tue Jan 12 16:46:09 2016<br>
> New Revision: 257534<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=257534&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=257534&view=rev</a><br>
> Log:<br>
> [Utils] Insert DW_OP_bit_piece when only describing part of the variable<br>
><br>
> Summary: The dbg.declare -> dbg.value conversion looks through any zext/sext<br>
> to find a value to describe the variable (in the expectation that those<br>
> zext/sext instruction will go away later). However, those values do not<br>
> cover the entire variable and thus need a DW_OP_bit_piece.<br>
<br>
This gives an assertion on the following test when compiling with -O2 -g:<br>
<br>
    struct stat {<br>
      int st_gid<br>
    };<br>
    typedef struct {<br>
      char *path;<br>
      struct stat attr<br>
    } ctlfs_entry_t;<br>
    mkstatnod(short p1) {<br>
      ctlfs_entry_t c;<br>
      memset(&c, 0, sizeof(ctlfs_entry_t));<br>
      c.attr.st_gid = p1;<br>
    }<br>
<br>
--> llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp:1561: void<br>
llvm::DebugLocEntry::finalize(const llvm::AsmPrinter &,<br>
DebugLocStream::ListBuilder &, const llvm::DIBasicType *): Assertion<br>
`Offset <= PieceOffset && "overlapping or duplicate pieces"' failed.<br>
<br>
This is a regression for clang 3.8.<br>
<span class="HOEnZb"><font color="#888888"><br>
Joerg<br>
</font></span></blockquote></div><br></div>